﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using negocios;
using publico;
using objetos;
using System.Data;
using System.Text;
using System.Transactions;
using System.Web.Services;
using System.IO;
using nfe;
 

namespace softsales.pagina.nf
{
    public partial class nf_incluir : System.Web.UI.Page
    {      
        // nota fiscal

        BLL_TB_NF b_tb_nf = new BLL_TB_NF();
        OBJ_TB_NF o_tb_nf = new OBJ_TB_NF();        

        // nota fiscal item

        BLL_TB_NF_ITEM b_tb_nf_item = new BLL_TB_NF_ITEM();
        OBJ_TB_NF_ITEM o_tb_nf_item = new OBJ_TB_NF_ITEM();


        // nota fiscal item imposto icms
        BLL_TB_NF_ITEM_IMPOSTO_ICMS b_tb_nf_item_imposto_icms = new BLL_TB_NF_ITEM_IMPOSTO_ICMS();
        OBJ_TB_NF_ITEM_IMPOSTO_ICMS o_tb_nf_item_imposto_icms = new OBJ_TB_NF_ITEM_IMPOSTO_ICMS();

        // nota fiscal item imposto cofins
        BLL_TB_NF_ITEM_IMPOSTO_COFINS b_tb_nf_item_imposto_cofins = new BLL_TB_NF_ITEM_IMPOSTO_COFINS();
        OBJ_TB_NF_ITEM_IMPOSTO_COFINS o_tb_nf_item_imposto_cofins = new OBJ_TB_NF_ITEM_IMPOSTO_COFINS();

        // nota fiscal item imposto ipi
        BLL_TB_NF_ITEM_IMPOSTO_IPI b_tb_nf_item_imposto_ipi = new BLL_TB_NF_ITEM_IMPOSTO_IPI();
        OBJ_TB_NF_ITEM_IMPOSTO_IPI o_tb_nf_item_imposto_ipi = new OBJ_TB_NF_ITEM_IMPOSTO_IPI();

        //nota fiscal item imposto issqn
        BLL_TB_NF_ITEM_IMPOSTO_ISSQN b_tb_nf_item_imposto_issqn = new BLL_TB_NF_ITEM_IMPOSTO_ISSQN();
        OBJ_TB_NF_ITEM_IMPOSTO_ISSQN o_tb_nf_item_imposto_issqn = new OBJ_TB_NF_ITEM_IMPOSTO_ISSQN();

        // nota fiscal item imposto pis
        BLL_TB_NF_ITEM_IMPOSTO_PIS b_tb_nf_item_imposto_pis = new BLL_TB_NF_ITEM_IMPOSTO_PIS();
        OBJ_TB_NF_ITEM_IMPOSTO_PIS o_tb_nf_item_imposto_pis = new OBJ_TB_NF_ITEM_IMPOSTO_PIS();

        // nota fiscal item imposto ii
        BLL_TB_NF_ITEM_IMPOSTO_II b_tb_nf_item_imposto_ii = new BLL_TB_NF_ITEM_IMPOSTO_II();
        OBJ_TB_NF_ITEM_IMPOSTO_II o_tb_nf_item_imposto_ii = new OBJ_TB_NF_ITEM_IMPOSTO_II();

        // nota fiscal info adicional
        OBJ_TB_NF_INFO_ADICIONAL o_tb_nf_info_adicional = new OBJ_TB_NF_INFO_ADICIONAL();
        BLL_TB_NF_INFO_ADICIONAL b_tb_nf_info_adicional = new BLL_TB_NF_INFO_ADICIONAL();

        // nota fiscal parametro

        BLL_TB_NF_PARAMETRO b_tb_nf_parametro = new BLL_TB_NF_PARAMETRO();
        OBJ_TB_NF_PARAMETRO o_tb_nf_parametro = new OBJ_TB_NF_PARAMETRO();

        // empresa
        BLL_TB_EMPRESA b_tb_empresa = new BLL_TB_EMPRESA();
        OBJ_TB_EMPRESA o_tb_empresa = new OBJ_TB_EMPRESA();
 

        // endereco empresa
        BLL_TB_ENDERECO_EMPRESA b_tb_endereco_empresa = new BLL_TB_ENDERECO_EMPRESA();
        OBJ_TB_ENDERECO_EMPRESA o_tb_endereco_empresa = new OBJ_TB_ENDERECO_EMPRESA();

        BLL_TB_CADASTRO b_tb_cadastro = new BLL_TB_CADASTRO();
        OBJ_TB_CADASTRO o_tb_cadastro = new OBJ_TB_CADASTRO();

        //  endereco cadastro 
        BLL_TB_ENDERECO_CADASTRO b_tb_endereco_cadastro = new BLL_TB_ENDERECO_CADASTRO();
        OBJ_TB_ENDERECO_CADASTRO o_tb_endereco_cadastro = new OBJ_TB_ENDERECO_CADASTRO();

        // produto
        BLL_TB_PRODUTO b_tb_produto = new BLL_TB_PRODUTO();
        OBJ_TB_PRODUTO o_tb_produto = new OBJ_TB_PRODUTO();

        BLL_TB_CONDICAO_PAGAMENTO_PRAZO b_tb_condicao_pagamento_prazo = new BLL_TB_CONDICAO_PAGAMENTO_PRAZO();

        // CONTA PAGAR
        BLL_TB_CONTA_PAGAR b_tb_conta_pagar = new BLL_TB_CONTA_PAGAR();
        OBJ_TB_CONTA_PAGAR o_tb_conta_pagar = new OBJ_TB_CONTA_PAGAR();

        // CONTA CONTABIL
        OBJ_TB_CONTA_CONTABIL o_tb_conta_contabil = new OBJ_TB_CONTA_CONTABIL();
        BLL_TB_CONTA_CONTABIL b_tb_conta_contabil = new BLL_TB_CONTA_CONTABIL();

        // CONTA RECEBER
        BLL_TB_CONTA_RECEBER b_tb_conta_receber = new BLL_TB_CONTA_RECEBER();
        OBJ_TB_CONTA_RECEBER o_tb_conta_receber = new OBJ_TB_CONTA_RECEBER();
        
        // produto imposto
        BLL_TB_PRODUTO_IMPOSTO b_tb_produto_imposto = new BLL_TB_PRODUTO_IMPOSTO();
        OBJ_TB_PRODUTO_IMPOSTO o_tb_produto_imposto = new OBJ_TB_PRODUTO_IMPOSTO();

        // forma pagamento 

        BLL_TB_FORMA_PAGAMENTO b_tb_forma_pagamento = new BLL_TB_FORMA_PAGAMENTO();
        OBJ_TB_FORMA_PAGAMENTO o_tb_forma_pagamento = new OBJ_TB_FORMA_PAGAMENTO();

        BLL_TB_BANCO_CONTA_CORRENTE b_tb_banco_conta_corrente = new BLL_TB_BANCO_CONTA_CORRENTE();
        OBJ_TB_BANCO_CONTA_CORRENTE o_tb_banco_conta_corrente = new OBJ_TB_BANCO_CONTA_CORRENTE();

        // condicao pagamento

        BLL_TB_CONDICAO_PAGAMENTO b_tb_condicao_pagamento = new BLL_TB_CONDICAO_PAGAMENTO();
        OBJ_TB_CONDICAO_PAGAMENTO o_tb_condicao_pagamento = new OBJ_TB_CONDICAO_PAGAMENTO();

        // tipo emissao 
        BLL_TB_NF_TIPO_EMISSAO b_tb_nf_tipo_emissao = new BLL_TB_NF_TIPO_EMISSAO();
        OBJ_TB_NF_TIPO_EMISSAO o_tb_nf_tipo_emissao = new OBJ_TB_NF_TIPO_EMISSAO();

        // cfop

        BLL_TB_CFOP b_tb_cfop = new BLL_TB_CFOP();
        OBJ_TB_CFOP o_tb_cfop = new OBJ_TB_CFOP();

        // nf status
        BLL_TB_NF_STATUS b_tb_nf_status = new BLL_TB_NF_STATUS();
        OBJ_TB_NF_STATUS o_tb_nf_status = new OBJ_TB_NF_STATUS();

        // nf finalidade
        BLL_TB_NF_FINALIDADE b_tb_nf_finalidade = new BLL_TB_NF_FINALIDADE();
        OBJ_TB_NF_FINALIDADE o_tb_nf_finalidade = new OBJ_TB_NF_FINALIDADE();

        // nf mod doc fiscal
        BLL_TB_NF_MOD_DOC_FISCAL b_tb_nf_mod_doc_fiscal = new BLL_TB_NF_MOD_DOC_FISCAL();
        OBJ_TB_NF_MOD_DOC_FISCAL o_tb_nf_mod_doc_fiscal = new OBJ_TB_NF_MOD_DOC_FISCAL();

        // nf operacao 
        BLL_TB_NF_OPERACAO b_tb_nf_operacao = new BLL_TB_NF_OPERACAO();
        OBJ_TB_NF_OPERACAO o_tb_nf_operacao = new OBJ_TB_NF_OPERACAO();

        BLL_TB_USUARIO b_tb_usuario = new BLL_TB_USUARIO();

        // tipo frete
        BLL_TB_TIPO_FRETE b_tb_tipo_frete = new BLL_TB_TIPO_FRETE();
        OBJ_TB_TIPO_FRETE o_tb_tipo_frete = new OBJ_TB_TIPO_FRETE();

        BLL_TB_UNIDADE_MEDIDA b_tb_unidade_medida = new BLL_TB_UNIDADE_MEDIDA();
        OBJ_TB_UNIDADE_MEDIDA o_tb_unidade_medidao = new OBJ_TB_UNIDADE_MEDIDA();

        // cidade
        BLL_TB_CIDADE b_tb_cidade_empresa = new BLL_TB_CIDADE();
        OBJ_TB_CIDADE o_tb_cidade_empresa = new OBJ_TB_CIDADE();

        // cidade cadastro
        BLL_TB_CIDADE b_tb_cidade_cadastro = new BLL_TB_CIDADE();
        OBJ_TB_CIDADE o_tb_cidade_cadastro = new OBJ_TB_CIDADE();

        // uf
        BLL_TB_UF b_tb_uf = new BLL_TB_UF();
        OBJ_TB_UF o_tb_uf = new OBJ_TB_UF();

        // NUMERACAO NOTA FISCAL
        OBJ_TB_NF_NUMERACAO o_tb_nf_numeracao = new OBJ_TB_NF_NUMERACAO();
        BLL_TB_NF_NUMERACAO b_tb_nf_numeracao = new BLL_TB_NF_NUMERACAO();   
  

        // pedido
        OBJ_TB_PEDIDO o_tb_pedido = new OBJ_TB_PEDIDO();
        BLL_TB_PEDIDO b_tb_pedido = new BLL_TB_PEDIDO();

        // pedido item
        OBJ_TB_PEDIDO_ITEM o_tb_pedido_item = new OBJ_TB_PEDIDO_ITEM();
        BLL_TB_PEDIDO_ITEM b_tb_pedido_item = new BLL_TB_PEDIDO_ITEM();
        BLL_TB_ORIGEM_PRODUTO b_tb_origem_produto = new BLL_TB_ORIGEM_PRODUTO();
        BLL_TB_IMPOSTO_CSOSN b_tb_imposto_csosn = new BLL_TB_IMPOSTO_CSOSN();
        BLL_TB_IMPOSTO_CST_COFINS b_tb_imposto_cst_cofins = new BLL_TB_IMPOSTO_CST_COFINS();
        BLL_TB_IMPOSTO_CST_ICMS b_tb_imposto_cst_icms = new BLL_TB_IMPOSTO_CST_ICMS();
        BLL_TB_IMPOSTO_CST_IPI b_tb_imposto_cst_ipi = new BLL_TB_IMPOSTO_CST_IPI();
        BLL_TB_IMPOSTO_CST_PIS b_tb_imposto_cst_pis = new BLL_TB_IMPOSTO_CST_PIS();
        BLL_TB_IMPOSTO_ISSQN b_tb_imposto_cst_issqn = new BLL_TB_IMPOSTO_ISSQN();
        BLL_TB_MODALIDADE_BC_ICMS b_tb_modalidade_bc_icms = new BLL_TB_MODALIDADE_BC_ICMS();
        BLL_TB_MODALIDADE_BC_ICMS_ST b_tb_modalidade_bc_icms_st = new BLL_TB_MODALIDADE_BC_ICMS_ST();
        BLL_TB_DESONERACAO_ICMS b_tb_nf_desoneracao_icms = new BLL_TB_DESONERACAO_ICMS();

        // ordem servico
        BLL_TB_ORDEM_SERVICO b_tb_ordem_servico = new BLL_TB_ORDEM_SERVICO();
        OBJ_TB_ORDEM_SERVICO o_tb_ordem_servico = new OBJ_TB_ORDEM_SERVICO();

        // nf transportadora
        BLL_TB_NF_TRANSP  b_tb_nf_transp = new BLL_TB_NF_TRANSP();
        OBJ_TB_NF_TRANSP  o_tb_nf_transp = new OBJ_TB_NF_TRANSP();

        // veiculo
        BLL_TB_NF_TRANSP_VEICULO b_tb_nf_transp_veiculo = new BLL_TB_NF_TRANSP_VEICULO();
        OBJ_TB_NF_TRANSP_VEICULO o_tb_nf_transp_veiculo = new OBJ_TB_NF_TRANSP_VEICULO();

        // nf volume
        BLL_TB_NF_TRANSP_VOLUME b_tb_nf_transp_volume = new BLL_TB_NF_TRANSP_VOLUME();
        OBJ_TB_NF_TRANSP_VOLUME o_tb_nf_transp_volume = new OBJ_TB_NF_TRANSP_VOLUME();
        
        // nf tributo
        OBJ_TB_NF_TRANSP_TRIB_RET o_tb_nf_transp_trib_ret = new OBJ_TB_NF_TRANSP_TRIB_RET();
        BLL_TB_NF_TRANSP_TRIB_RET b_tb_nf_transp_trib_ret = new BLL_TB_NF_TRANSP_TRIB_RET();


        BLL_TB_CIDADE b_tb_cidade_transp = new BLL_TB_CIDADE();


        BLL_TB_CENTRO_CUSTO b_tb_centro_custo = new BLL_TB_CENTRO_CUSTO();
        OBJ_TB_CENTRO_CUSTO o_tb_centro_custo = new OBJ_TB_CENTRO_CUSTO();


        BLL_TB_NF_PROCESSO_EMISSAO b_tb_nf_processo_emissao = new BLL_TB_NF_PROCESSO_EMISSAO();
        BLL_TB_NF_AMBIENTE b_tb_nf_ambiente = new BLL_TB_NF_AMBIENTE();
        BLL_TB_NF_FORMA_IMPRESSAO b_tb_nf_forma_impressao = new BLL_TB_NF_FORMA_IMPRESSAO();
        BLL_TB_NF_VERSAO b_tb_nf_versao = new BLL_TB_NF_VERSAO();

        // log erro

        OBJ_TB_LOG_ERRO o_tb_log_erro = new OBJ_TB_LOG_ERRO();
        BLL_TB_LOG_ERRO b_tb_log_erro = new BLL_TB_LOG_ERRO();

        BLL_TB_SERVICO b_tb_servico = new BLL_TB_SERVICO();
        OBJ_TB_SERVICO o_tb_servico = new OBJ_TB_SERVICO();

  

        private int id_operacao { get; set; }


        private int Id_nf_item
        {
            get {
                if (ViewState["id_nf_item"] == null)
                {
                    ViewState["id_nf_item"] = 0;
                }
                return (int)ViewState["id_nf_item"];
            }
            set {  ViewState["id_nf_item"] = value; }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (PUB_SESSAO.Logado())
            {


                if (Request["id_operacao"] != null)
                {

                    id_operacao = Convert.ToInt32(Request["id_operacao"].ToString());


                }
 
                if (!IsPostBack)
                {
                    TituloPagina();
                    b_tb_condicao_pagamento.PreencheControleWeb(DDL_ID_CONDICAO_PAGAMENTO, true);
                    b_tb_empresa.PreencheControleWeb(DDL_ID_EMPRESA, true);
                    b_tb_forma_pagamento.PreencheControle(DDL_ID_FORMA_PAGAMENTO, true);
                    b_tb_nf_finalidade.PreencheControle(DDL_ID_FINALIDADE, true);
                    b_tb_nf_mod_doc_fiscal.PreencheControle(DDL_ID_MOD_DOC_FISCAL, "id in ('01','55')", "", false);
                    b_tb_nf_operacao.PreencheControle(DDL_ID_OPERACAO, false);
                    b_tb_nf_status.PreencheControle(DDL_ID_STATUS, true);
                    b_tb_nf_tipo_emissao.PreencheControleWeb(DDL_ID_TIPO_EMISSAO, true);
                    b_tb_tipo_frete.PreencheControle(DDL_ID_TIPO_FRETE, true);
                    b_tb_cadastro.PreencheControle(DDL_ID_TRANSPORTADORA, string.Format("id in (select id_cadastro from tb_cadastro_tipo where id_tipo_cadastro = {0})", (int)PUB_ENUM.TIPO_CADASTRO.TRANSPORTADORA), "nome", true);
                    b_tb_unidade_medida.PreencheControle(DDL_ID_UNIDADE_MEDIDA, true);
                    b_tb_usuario.PreencheControle(DDL_ID_USUARIO_VENDEDOR, false);
                    b_tb_uf.PreencheControle(DDL_UF_ISSQN_FG, true);
                    b_tb_uf.PreencheControle(DDL_UF_ST, true);
                    b_tb_servico.PreencheControle(DDL_ID_SERVICO_ISSQN, true);
                    b_tb_origem_produto.PreencheControle(DDL_ID_ORIGEM_PRODUTO, true);
                    b_tb_imposto_csosn.PreencheControle(DDL_ID_CSOSN, true);
                    b_tb_imposto_cst_cofins.PreencheControle(DDL_ID_CST_COFINS, true);
                    b_tb_imposto_cst_icms.PreencheControle(DDL_ID_CST_ICMS, true);
                    b_tb_imposto_cst_ipi.PreencheControle(DDL_ID_CST_IPI, true);
                    b_tb_imposto_cst_pis.PreencheControle(DDL_ID_CST_PIS, true);
                    b_tb_imposto_cst_issqn.PreencheControle(DDL_ID_SERVICO_ISSQN, true);
                    b_tb_modalidade_bc_icms.PreencheControle(DDL_ID_MOD_BC_ICMS, true);
                    b_tb_modalidade_bc_icms_st.PreencheControle(DDL_ID_MOD_BC_ICMS_ST, true);
                    b_tb_nf_desoneracao_icms.PreencheControle(DDL_ID_MOT_DESONERACAO_ICMS, true);
                    b_tb_origem_produto.PreencheControle(DDL_ID_ORIGEM_PRODUTO, true);
                    b_tb_uf.PreencheControle(DDL_UF_TRANSP, true);
                    b_tb_banco_conta_corrente.PreencheControle(DDL_ID_BANCO_CONTA_CORRENTE, true);
                    b_tb_nf_processo_emissao.PreencheControle(DDL_ID_PROCESSO_EMISSAO, true);
                    b_tb_nf_ambiente.PreencheControle(DDL_ID_AMBIENTE, true);
                    b_tb_nf_forma_impressao.PreencheControle(DDL_ID_FORMA_IMPRESSAO, true);
                    b_tb_nf_versao.PreencheControle(DDL_VERSAO_APLICATIVO, true);
                    b_tb_centro_custo.PreencheControle(DDL_ID_CENTRO_CUSTO, string.Format("tb_centro_custo.id in (select id_centro_custo from tb_empresa_centro_custo where id_empresa in (select id from tb_empresa))"), "", true);
                    b_tb_conta_contabil.PreencheControle(DDL_ID_CONTA_CONTABIL, string.Format("tb_conta_contabil.id in (SELECT id_conta_contabil FROM tb_centro_custo_conta_contabil where id_centro_custo in (SELECT id_centro_custo FROM tb_empresa_centro_custo where id_empresa in (select id from tb_empresa)))"),"",false);


                    // INICIALIZA OS CAMPOS
                    DDL_ID_TIPO_EMISSAO.SelectedValue = string.Format("{0}", (int)PUB_ENUM.NF_TIPO_EMISSAO.NORMAL);
                    DDL_ID_FINALIDADE.SelectedValue = string.Format("{0}", (int)PUB_ENUM.NF_FINALIDADE.NFE_NORMAL);
                    DDL_ID_MOD_DOC_FISCAL.SelectedValue = string.Format("{0}", "55");
                    DDL_ID_STATUS.SelectedValue = string.Format("{0}",(int)PUB_ENUM.NF_STATUS.EMDIGITACAO);
                    DDL_ID_TIPO_FRETE.SelectedValue = string.Format("{0}", (int)PUB_ENUM.TIPO_FRETE.Sem_frete);
                    DDL_ID_USUARIO_VENDEDOR.SelectedValue = PUB_SESSAO.Id.ToString();
                    DDL_ID_USUARIO_VENDEDOR.Enabled = false;
                    DDL_ID_STATUS.Enabled = false;
                    DDL_ID_OPERACAO.Enabled = false;
                    TXT_DT_EMISSAO.Text = DateTime.Now.ToShortDateString();
                    CHK_IND_TOTAL_NOTA.Checked = true;
                    TXT_QTD.Text = "1";

                    // OCULTA PAINEIS
                    PNL_NF_CONTINGENCIA.Visible = false;
                    PNL_GERAR_FINANCEIRO.Visible = false;
                    TAB_CONTAINER.ActiveTab = TAB_NF;
                    TAB_NF_TRANSPORTADORA.Visible = false;

                    DDL_ID_FORMA_PAGAMENTO.SelectedValue = string.Format("{0}", (int)PUB_ENUM.FORMA_PAGAMENTO.AVISTA);
                    DDL_ID_CONDICAO_PAGAMENTO.SelectedValue = string.Format("{0}", (int)PUB_ENUM.CONDICAO_PAGAMENTO.DINHEIRO);


                    //// celeciona
                    //if (Equals(id_operacao, (int)PUB_ENUM.NF_OPERACAO.ENTRADA))
                    //{
                    //    DDL_ID_CENTRO_CUSTO.SelectedValue = string.Format("{0}", (int)PUB_ENUM.CENTRO_CUSTO.COMPRAS);
                    //}
                    //else
                    //{
                    //    DDL_ID_CENTRO_CUSTO.SelectedValue = string.Format("{0}", (int)PUB_ENUM.CENTRO_CUSTO.VENDAS);                       
                    //}

                    if (Request["id_pedido"] != null)
                    {
                        CarregaPedido(Request["id_pedido"].ToString());
                    }
                  
                  

                }
                else
                {
                    if (Session["id_produto"] != null)
                    {
                        // é obrigatorio o usuario selecionar o cfop antes de selecionar o produto
                        if (TXT_CFOP.Text != string.Empty)
                        {
                            int id_produto = Convert.ToInt32(Session["id_produto"].ToString());
                            o_tb_produto = b_tb_produto.SelecionarObjetoPorId(id_produto);

                            TXT_CFOP_ITEM.Text = o_tb_produto.cfop.ToString();
                            TXT_ID_PRODUTO_SERVICO.Text = id_produto.ToString();
                            TXT_DESCRICAO.Text = o_tb_produto.descricao.ToString();
                            DDL_ID_UNIDADE_MEDIDA.SelectedValue = o_tb_produto.id_unidade_medida.ToString();
                            TXT_VALOR_DESCONTO.Text = "0,00";
                            TXT_VALOR_FRETE.Text = "0,00";
                            TXT_VALOR_SEGURO.Text = "0,00";
                            TXT_VALOR_OUTRO.Text = "0,00";
                            TXT_QTD.Text = "1";
                            TXT_VALOR_UNITARIO.Text = o_tb_produto.valor_venda.ToString();
                            TXT_VALOR_TOTAL_ITEM.Text = o_tb_produto.valor_venda.ToString();

                            DDL_ID_ORIGEM_PRODUTO.SelectedValue = o_tb_produto_imposto.id_origem_produto.ToString();

                            // carrega informacoes do imposto atraves do produto
                            CarregaImpostoProduto(id_produto);

                        }
                        else
                        {
                            Master.MSG_ALERTA("Favor selecione o CFOP.");
                        }
                        
                        Session.Remove("id_produto");
                    }

                    if (Session["id_cadastro"] != null)
                    {
                        int id_cadastro = Convert.ToInt32(Session["id_cadastro"].ToString());
                        o_tb_cadastro  = b_tb_cadastro.SelecionarObjetoPorId(id_cadastro);

                        TXT_ID_CLI_FOR.Text = id_cadastro.ToString();
                        TXT_NOME_CLI_FOR.Text = o_tb_cadastro.nome.ToString();


                        if (Equals(id_operacao, (int)PUB_ENUM.NF_OPERACAO.SAIDA))
                        {

                            DDL_ID_ENDERECO_ENTREGA.Items.Clear();
                            foreach (OBJ_TB_ENDERECO_CADASTRO o_tb_endereco_cadastro in b_tb_endereco_cadastro.SelecionarLista(string.Format("tb_endereco_cadastro.id_cadastro={0}", id_cadastro), ""))
                            {
                                DDL_ID_ENDERECO_ENTREGA.Items.Add(new ListItem(string.Concat(o_tb_endereco_cadastro.endereco.ToString(), ",", o_tb_endereco_cadastro.numero.ToString()), o_tb_endereco_cadastro.id.ToString()));
                            }

                        }
                        else
                        {
                            DDL_ID_ENDERECO_RETIRADA.Items.Clear();
                            foreach (OBJ_TB_ENDERECO_CADASTRO o_tb_endereco_cadastro in b_tb_endereco_cadastro.SelecionarLista(string.Format("tb_endereco_cadastro.id_cadastro={0}", id_cadastro), ""))
                            {
                                DDL_ID_ENDERECO_RETIRADA.Items.Add(new ListItem(string.Concat(o_tb_endereco_cadastro.endereco.ToString(), ",", o_tb_endereco_cadastro.numero.ToString()), o_tb_endereco_cadastro.id.ToString()));
                            }
                        }



                        Session.Remove("id_cadastro");
                    }


                    if (Session["id_cfop"] != null)
                    {
                         
                        if (TXT_CFOP.Text == string.Empty)
                        {
                            TXT_CFOP.Text = Session["id_cfop"].ToString();

                        }
                        else
                        {
                            TXT_CFOP_ITEM.Text = Session["id_cfop"].ToString();
                        }                        

                        Session.Remove("id_cfop");
                    }

                    if (Session["id_ordem_servico"] != null)
                    {
                        int id_ordem_servico = Convert.ToInt32(Session["id_ordem_servico"].ToString());
                        TXT_ID_ORDEM_SERVICO.Text = id_ordem_servico.ToString();
                        
                        Session.Remove("id_ordem_servico");
                    }

                    if (Session["id_pedido"] != null)
                    {
                        int id_pedido = Convert.ToInt32(Session["id_pedido"].ToString());

                        o_tb_pedido = b_tb_pedido.SelecionarObjetoPorId(id_pedido);
                        o_tb_cadastro = b_tb_cadastro.SelecionarObjetoPorId(o_tb_pedido.id_cadastro);

                        TXT_ID_PEDIDO.Text = id_pedido.ToString();

                        DDL_ID_EMPRESA.SelectedValue = o_tb_pedido.id_empresa.ToString();
                        TXT_ID_CLI_FOR.Text = o_tb_pedido.id_cadastro.ToString();
                        TXT_NOME_CLI_FOR.Text = o_tb_cadastro.nome.ToString();
                        DDL_ID_FORMA_PAGAMENTO.SelectedValue = o_tb_pedido.id_forma_pagamento.ToString();
                        DDL_ID_CONDICAO_PAGAMENTO.SelectedValue = o_tb_pedido.id_condicao_pagamento.ToString();
                       

                        Session.Remove("id_pedido");
                    }

                }


                if (GRV_TB_NF_ITEM.Rows.Count > 0)
                {
                    PNL_NF_ITEM_GRID.Visible = true;
                }
                else
                {
                    PNL_NF_ITEM_GRID.Visible = false;
                }

                DDL_ID_OPERACAO.SelectedValue = id_operacao.ToString();

            }
        }

        private void TituloPagina()
        {

            if (Equals(id_operacao, (int)PUB_ENUM.NF_OPERACAO.ENTRADA))
            {
                LBL_TITULO_PAGINA.Text = string.Format("Nota Fiscal Compra Nº {0} ", TXT_NUM_NOTA_FISCAL.Text);
            }
            else
            {
                LBL_TITULO_PAGINA.Text = string.Format("Nota Fiscal Venda Nº {0}", TXT_NUM_NOTA_FISCAL.Text);
                DDL_ID_MOD_DOC_FISCAL.SelectedValue = "55";
                DDL_ID_MOD_DOC_FISCAL.Enabled = false;
                PNL_NF_MOD_NFE.Visible = false;

            }
        }

        private void CarregaImpostoProduto(int id_produto)
        {
            o_tb_produto_imposto = b_tb_produto_imposto.SelecionarObjetoPorId(id_produto);
            
            if (Equals(id_operacao, (int)PUB_ENUM.NF_OPERACAO.SAIDA))
            {

                decimal val_aliq_cofins = Convert.ToDecimal(PUB_FUNCOES.FormataNumerico(o_tb_produto_imposto.valor_aliq_cofins.ToString()));
                decimal val_aliq_cofins_st = Convert.ToDecimal( PUB_FUNCOES.FormataNumerico(o_tb_produto_imposto.valor_aliq_cofins_st.ToString()));
                decimal val_aliq_icms = Convert.ToDecimal( PUB_FUNCOES.FormataNumerico(o_tb_produto_imposto.valor_aliq_icms.ToString()));
                decimal val_aliq_icms_st = Convert.ToDecimal( PUB_FUNCOES.FormataNumerico(o_tb_produto_imposto.valor_aliq_icms_st.ToString()));
                decimal val_aliq_ipi = Convert.ToDecimal( PUB_FUNCOES.FormataNumerico(o_tb_produto_imposto.valor_aliq_ipi.ToString()));
                decimal val_aliq_icms_mva_st = Convert.ToDecimal( PUB_FUNCOES.FormataNumerico(o_tb_produto_imposto.valor_aliq_mva_st.ToString()));
                decimal val_aliq_red_bc_icms = Convert.ToDecimal( PUB_FUNCOES.FormataNumerico(o_tb_produto_imposto.valor_red_aliq_icms.ToString()));
                decimal val_aliq_red_bc_icms_st = Convert.ToDecimal( PUB_FUNCOES.FormataNumerico(o_tb_produto_imposto.valor_red_aliq_bc_icms_st.ToString()));
  
                DDL_ID_CST_ICMS.SelectedValue = o_tb_produto_imposto.id_cst_icms.ToString();
                DDL_ID_CST_COFINS.SelectedValue = o_tb_produto_imposto.id_cst_cofins.ToString();
                DDL_ID_CST_IPI.SelectedValue = o_tb_produto_imposto.id_cst_ipi.ToString();
                DDL_ID_CST_PIS.SelectedValue = o_tb_produto_imposto.id_cst_pis.ToString();
                TXT_VALOR_ALIQ_PIS_ST.Text = PUB_FUNCOES.FormataNumerico(o_tb_produto_imposto.valor_aliq_pis_st.ToString());
                DDL_ID_MOD_BC_ICMS.SelectedValue = o_tb_produto_imposto.id_modalidade_bc_icms.ToString();
                DDL_ID_MOD_BC_ICMS_ST.SelectedValue = o_tb_produto_imposto.id_modalidade_bc_icms_st.ToString();
                TXT_VALOR_ALIQ_COFINS.Text = PUB_FUNCOES.FormataNumerico(val_aliq_cofins.ToString());
                TXT_VALOR_ALIQ_COFINS_ST.Text = PUB_FUNCOES.FormataNumerico(val_aliq_cofins_st.ToString());
                TXT_VALOR_ALIQ_ICMS.Text = PUB_FUNCOES.FormataNumerico(val_aliq_icms.ToString());
                TXT_VALOR_ALIQ_ICMS_ST.Text = PUB_FUNCOES.FormataNumerico(val_aliq_icms_st.ToString());
                TXT_VALOR_ALIQ_IPI.Text = PUB_FUNCOES.FormataNumerico(val_aliq_ipi.ToString());
                TXT_VALOR_ALIQ_ICMS_MVA_ST.Text = PUB_FUNCOES.FormataNumerico(val_aliq_icms_mva_st.ToString());
                TXT_VALOR_ALIQ_RED_BC_ICMS.Text = PUB_FUNCOES.FormataNumerico(val_aliq_red_bc_icms.ToString());
                TXT_VALOR_ALIQ_RED_BC_ICMS_ST.Text = PUB_FUNCOES.FormataNumerico(val_aliq_red_bc_icms_st.ToString());

     
  
            }          

        }

     
        private void CarregaPedido(string id_pedido)
        {
            try
            {                
                o_tb_pedido = b_tb_pedido.SelecionarObjetoPorId(Convert.ToInt32(id_pedido));
                o_tb_cadastro = b_tb_cadastro.SelecionarObjetoPorId(o_tb_pedido.id_cadastro);                    
                TXT_ID_PEDIDO.Text = id_pedido.ToString();
                DDL_ID_EMPRESA.SelectedValue = o_tb_pedido.id_empresa.ToString();
                TXT_ID_CLI_FOR.Text = o_tb_pedido.id_cadastro.ToString();
                TXT_NOME_CLI_FOR.Text = o_tb_cadastro.nome.ToString();
                DDL_ID_FORMA_PAGAMENTO.SelectedValue = o_tb_pedido.id_forma_pagamento.ToString();
                DDL_ID_CONDICAO_PAGAMENTO.SelectedValue = o_tb_pedido.id_condicao_pagamento.ToString();

                TXT_VALOR_TOTAL_PRODUTO.Text = PUB_FUNCOES.FormataNumerico(PUB_FUNCOES.TrataDecimal( o_tb_pedido.valor_total_produto.ToString()));

                List<OBJ_TB_UNIDADE_MEDIDA> lista_unidade_medida = new List<OBJ_TB_UNIDADE_MEDIDA>();

                List<OBJ_TB_NF_ITEM> lista_nf_item = new List<OBJ_TB_NF_ITEM>();
                OBJ_TB_PRODUTO o_tb_produto = null;
                foreach (OBJ_TB_PEDIDO_ITEM o_tb_pedido_item in b_tb_pedido_item.SelecionarLista(string.Format("tb_pedido_item.id_pedido = {0}",id_pedido),""))
                {
                    
                    o_tb_produto = b_tb_produto.SelecionarObjetoPorId(o_tb_pedido_item.id_produto_servico);

                    o_tb_nf_item = new OBJ_TB_NF_ITEM();
                    o_tb_nf_item.descricao= o_tb_pedido_item.descricao;
                    o_tb_nf_item.id_produto_servico = o_tb_pedido_item.id_produto_servico;
                    o_tb_nf_item.id_tipo_item = o_tb_pedido_item.id_tipo_item;
                    o_tb_nf_item.id_unidade_medida = o_tb_pedido_item.id_unidade_medida;
                    o_tb_nf_item.desc_unid_medida = lista_unidade_medida.Find((med)=>med.id == o_tb_pedido_item.id_unidade_medida).desc_unidade_medida.ToString();
                    o_tb_nf_item.desc_unid_medida_trib = lista_unidade_medida.Find((med) => med.id == o_tb_pedido_item.id_unidade_medida).desc_unidade_medida.ToString();
                    o_tb_nf_item.qtd = o_tb_pedido_item.qtd;
                    o_tb_nf_item.qtd_trib = o_tb_pedido_item.qtd;
                    o_tb_nf_item.ean = o_tb_produto.ean.ToString();
                    
                    o_tb_nf_item.extipi = o_tb_produto.extipi.ToString();
                    o_tb_nf_item.id_genero_produto_servico = o_tb_produto.id_genero_produto_servico;
                    o_tb_nf_item.id_ncm = o_tb_produto.id_ncm;
                    o_tb_nf_item.valor_desconto = o_tb_pedido_item.valor_desconto;
                    o_tb_nf_item.valor_outro = o_tb_pedido_item.valor_outro;
                    o_tb_nf_item.valor_unitario = o_tb_nf_item.valor_unitario;

                    
                }




            }
            catch (Exception)
            {
                
                throw;
            }
        }

        protected void IMG_BTN_EDITAR_Click(object sender, ImageClickEventArgs e)
        {

        }

        protected void IMG_BTN_EXCLUIR_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                ImageButton btn = (ImageButton)sender;

                if(btn != null)
                {
                    int id = Convert.ToInt32(btn.CommandArgument.ToString());
                    o_tb_nf_item = new OBJ_TB_NF_ITEM();
                    o_tb_nf_item = b_tb_nf_item.SelecionarObjetoPorId(id);
                    b_tb_nf_item.Excluir(o_tb_nf_item);

                    Master.MSG_ALERTA("Item excluído com sucesso.");
                }
                

            }
            catch (Exception ex)
            {

                Master.MSG_ALERTA("Erro "+ ex.Message);
            }
        }

     

        protected void GRV_TB_NF_ITEM_Sorting(object sender, GridViewSortEventArgs e)
        {

        }


        private void PreencheNotaFiscalItem()
        {
            GRV_TB_NF_ITEM.DataSource = b_tb_nf_item.Selecionar(string.Format("tb_nf_item.id_nf = {0}",HF_ID.Value),"");
            GRV_TB_NF_ITEM.DataBind();


        }

        protected void BTN_INCLUIR_ITEM_Click(object sender, EventArgs e)
        {
            try
            {

                if (DDL_ID_EMPRESA.SelectedValue != string.Empty && TXT_ID_PRODUTO_SERVICO.Text != string.Empty
                    && TXT_QTD.Text != string.Empty && DDL_ID_ENDERECO_ENTREGA.SelectedValue != string.Empty
                    && DDL_ID_ENDERECO_RETIRADA.SelectedValue != string.Empty
                    && TXT_NUM_NOTA_FISCAL.Text != string.Empty)
                {
                    using (TransactionScope scope = new TransactionScope())
                    {
                        if (HF_ID.Value == string.Empty)
                        {
                            HF_ID.Value = IncluirNF().ToString();
                        }

                        // verifica se ja existe o item, se não existir entra
                        if (!b_tb_nf_item.ExisteItem(Convert.ToInt32(HF_ID.Value), Convert.ToInt32(TXT_ID_PRODUTO_SERVICO.Text)))
                        {
                            // inclui item
                            IncluirNFItem();

                            // inclui o icms se estiver selecionado
                            if(DDL_ID_CST_ICMS.SelectedValue != string.Empty)
                                IncluirNFItemICMS();

                            // inclui o ipi se estiver selecionado
                            if(DDL_ID_CST_IPI.SelectedValue != string.Empty)
                                IncluirNFItemIPI();

                            // inclui o cofins se estiver selecionado
                            if(DDL_ID_CST_COFINS.SelectedValue != string.Empty)
                                IncluirNFItemCOFINS();

                            // Este grupo só deve ser informado se o produto for sujeito a COFINS por ST, CST = 05, a informação deste grupo não desobriga a informação do grupo COFINS.
                            if (DDL_ID_CST_ICMS.SelectedValue == "05")
                            {
                                IncluirNFItemCOFINSST();
                                IncluirNFItemPISST();
                            }
                                

                            // inclui o pis se estiver selecionado
                            if (DDL_ID_CST_PIS.SelectedValue != string.Empty)
                                IncluirNFItemPIS();
                            

                            // inclui o servico se estiver selecionado
                            if(DDL_ID_SERVICO_ISSQN.SelectedValue != string.Empty)
                                IncluirNFItemISSQN();

                            PreencheNotaFiscalItem();
                            AtualizaValorNotaFiscal();
                            TotalNotaFiscal();
                            ResetItem();
                            PNL_NF_ITEM_GRID.Visible = true;
                            
                            // valor total nota fiscal
                            TXT_VALOR_PARCELA.Text =  TXT_VALOR_TOTAL_NOTA_FISCAL.Text;
                            TXT_VALOR_SALDO.Text = TXT_VALOR_TOTAL_NOTA_FISCAL.Text;
                            TXT_VALOR_SALDO.Enabled = false;

                            TituloPagina();
                        }
                        else
                        {
                            Master.MSG_ALERTA("Item já foi incluído.");
                        }

                        

                        scope.Complete();

                        scope.Dispose();
                    }
                
                }

                
                
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        private void ResetItem()
        {
            TXT_ID_PRODUTO_SERVICO.Text = string.Empty;
            TXT_DESCRICAO.Text = string.Empty;
            TXT_CFOP_ITEM.Text = string.Empty;
            DDL_ID_UNIDADE_MEDIDA.SelectedValue = string.Empty;
            TXT_VALOR_UNITARIO.Text = "0,00";
            TXT_VALOR_UNID_TRIB_IPI.Text = "0,00";
            TXT_QTD.Text = "1";
            TXT_VALOR_DESCONTO.Text = "0,00";
            TXT_VALOR_FRETE.Text = "0,00";
            TXT_VALOR_TOTAL_ITEM.Text = "0,00";
            TXT_VALOR_ALIQ_BC_OP_PROPRIA.Text = "0,00";
            TXT_VALOR_ALIQ_COFINS.Text = "0,00";
            TXT_VALOR_ALIQ_COFINS_PROD.Text = "0,00";
            TXT_VALOR_ALIQ_COFINS_ST.Text = "0,00";
            TXT_VALOR_ALIQ_COFINS_ST_PROD.Text = "0,00";
            TXT_VALOR_ALIQ_CRED_SN.Text = "0,00";
            TXT_VALOR_ALIQ_ICMS.Text = "0,00";
            TXT_VALOR_ALIQ_ICMS_MVA_ST.Text = "0,00";
            TXT_VALOR_ALIQ_ICMS_RET_TRANSP.Text = "0,00";
            TXT_VALOR_ALIQ_ICMS_ST.Text = "0,00";
            TXT_VALOR_ALIQ_IPI.Text = "0,00";
            TXT_VALOR_ALIQ_ISSQN.Text = "0,00";
            TXT_VALOR_ALIQ_PIS.Text = "0,00";
            TXT_VALOR_ALIQ_PIS_ST.Text = "0,00";
            TXT_VALOR_ALIQ_PROD_PIS.Text = "0,00";
            TXT_VALOR_ALIQ_PROD_PIS_ST.Text = "0,00";
            TXT_VALOR_ALIQ_RED_BC_ICMS.Text = "0,00";
            TXT_VALOR_ALIQ_RED_BC_ICMS_ST.Text = "0,00";
            TXT_VALOR_BC_COFINS.Text = "0,00";
            TXT_VALOR_BC_COFINS_ST.Text = "0,00";
            TXT_VALOR_BC_ICMS.Text = "0,00";
            TXT_VALOR_BC_ICMS_RET_TRANSP.Text = "0,00";
            TXT_VALOR_BC_ICMS_ST.Text = "0,00";
            TXT_VALOR_BC_ICMS_ST_DEST.Text = "0,00";
            TXT_VALOR_BC_ICMS_ST_RET.Text = "0,00";
            TXT_VALOR_BC_II.Text = "0,00";
            TXT_VALOR_BC_IPI.Text = "0,00";
            TXT_VALOR_BC_ISSQN.Text = "0,00";
            TXT_VALOR_BC_PIS.Text = "0,00";
            TXT_VALOR_BC_PIS_ST.Text = "0,00";
            TXT_VALOR_COFINS.Text = "0,00";
            TXT_VALOR_COFINS_ST.Text = "0,00";
            TXT_VALOR_CRED_ICMS_SN.Text = "0,00";
            TXT_VALOR_DESP_ADU.Text = "0,00";
            TXT_VALOR_ICMS.Text = "0,00";
            TXT_VALOR_ICMS_RET_TRANSP.Text = "0,00";
            TXT_VALOR_ICMS_ST.Text = "0,00";
            TXT_VALOR_ICMS_ST_DEST.Text = "0,00";
            TXT_VALOR_ICMS_ST_RET.Text = "0,00";
            TXT_VALOR_II.Text = "0,00";
            TXT_VALOR_IOF.Text = "0,00";
            TXT_VALOR_IPI.Text = "0,00";
            TXT_VALOR_ISSQN.Text = "0,00";
            TXT_VALOR_OUTRO.Text = "0,00";
            TXT_VALOR_PARCELA.Text = "0,00";
            TXT_VALOR_PIS.Text = "0,00";
            TXT_VALOR_SEGURO.Text = "0,00";
            TXT_VALOR_CRED_ICMS_SN.Text = "0,00";
            DDL_ID_CSOSN.SelectedValue = string.Empty;
            DDL_ID_CST_COFINS.SelectedValue = string.Empty;
            DDL_ID_CST_ICMS.SelectedValue = string.Empty;
            DDL_ID_CST_IPI.SelectedValue = string.Empty;
            DDL_ID_CST_PIS.SelectedValue = string.Empty;
            DDL_ID_MOT_DESONERACAO_ICMS.SelectedValue = string.Empty;


            
        }


        private void AtualizaValorNotaFiscal()
        {
            int id_nf = Convert.ToInt32(HF_ID.Value);                  
            b_tb_nf_item.AtualizaTotalNotaFiscal(id_nf, id_operacao);

        }


        public void ImpostoProduto(string id_produto)
        {
            OBJ_TB_PRODUTO_IMPOSTO o_tb_produto_imposto = new OBJ_TB_PRODUTO_IMPOSTO();
            BLL_TB_PRODUTO_IMPOSTO b_tb_produto_imposto = new BLL_TB_PRODUTO_IMPOSTO();

            o_tb_produto_imposto = b_tb_produto_imposto.SelecionarObjetoPorId(Convert.ToInt32(id_produto));

            DDL_ID_ORIGEM_PRODUTO.SelectedValue = o_tb_produto_imposto.id_origem_produto.ToString();
            TXT_VALOR_ALIQ_ICMS.Text = o_tb_produto_imposto.valor_aliq_icms.ToString();
            TXT_VALOR_ALIQ_IPI.Text = o_tb_produto_imposto.valor_aliq_ipi.ToString();
            TXT_VALOR_ALIQ_ISSQN.Text = o_tb_produto_imposto.valor_aliq_iss.ToString();
            TXT_VALOR_ALIQ_PIS.Text = o_tb_produto_imposto.valor_aliq_pis.ToString();
            TXT_VALOR_ALIQ_PIS_ST.Text = o_tb_produto_imposto.valor_aliq_pis_st.ToString();
            DDL_ID_CST_COFINS.SelectedValue =  o_tb_produto_imposto.id_cst_cofins.ToString();
            DDL_ID_CST_ICMS.SelectedValue =  o_tb_produto_imposto.id_cst_icms.ToString();
            DDL_ID_CST_IPI.SelectedValue = o_tb_produto_imposto.id_cst_ipi.ToString();
            DDL_ID_CST_PIS.SelectedValue = o_tb_produto_imposto.id_cst_pis.ToString();
            DDL_ID_MOD_BC_ICMS.SelectedValue =  o_tb_produto_imposto.id_modalidade_bc_icms.ToString();
            DDL_ID_MOD_BC_ICMS_ST.SelectedValue = o_tb_produto_imposto.id_modalidade_bc_icms_st.ToString();
            TXT_VALOR_ALIQ_COFINS_ST.Text   = o_tb_produto_imposto.valor_aliq_cofins_st.ToString();
            TXT_VALOR_ALIQ_RED_BC_ICMS.Text = o_tb_produto_imposto.valor_red_aliq_icms.ToString();
            TXT_VALOR_ALIQ_RED_BC_ICMS_ST.Text = o_tb_produto_imposto.valor_red_aliq_bc_icms_st.ToString();

        }
   
        private void TotalNotaFiscal()
        {

            try
            {
                o_tb_nf = b_tb_nf.SelecionarObjetoPorId(Convert.ToInt32(HF_ID.Value));

                TXT_VALOR_TOTAL_OUTRO.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_outro.ToString());         //  +
                TXT_VALOR_TOTAL_PRODUTO.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_produto.ToString());     //  +
                TXT_VALOR_TOTAL_SERVICO.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_servico.ToString());     //  +
                TXT_VALOR_TOTAL_SEGURO.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_seguro.ToString());       //  +
                TXT_VALOR_TOTAL_FRETE.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_frete.ToString());         //  -
                TXT_VALOR_TOTAL_DESCONTO.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_desconto.ToString());   //  =
                TXT_VALOR_TOTAL_NOTA_FISCAL.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_nota_fiscal.ToString());

                TXT_VALOR_TOTAL_RET_PREV.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_ret_prev.ToString());
                TXT_VALOR_TOTAL_RET_PIS.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_ret_pis.ToString());
                TXT_VALOR_TOTAL_RET_CSLL.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_ret_csll.ToString());
                TXT_VALOR_TOTAL_RET_COFINS.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_ret_cofins.ToString());
                TXT_VALOR_TOTAL_BC_RET_PREV.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_bc_ret_prev.ToString());
                TXT_VALOR_TOTAL_IRRF.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_irrf.ToString());
                TXT_VALOR_TOTAL_BC_IRRF.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_bc_irrf.ToString());
 
                // ISSQN
                TXT_VALOR_TOTAL_COFINS_ISSQN.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_cofins_issqn.ToString());
                TXT_VALOR_TOTAL_PIS_ISSQN.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_pis_issqn.ToString());
                TXT_VALOR_TOTAL_BC_ISSQN.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_bc_issqn.ToString());
               

                // PIS
                TXT_VALOR_TOTAL_PIS_ST.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_pis_st.ToString());
                TXT_VALOR_TOTAL_PIS.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_pis.ToString());

                // IPI
                TXT_VALOR_TOTAL_IPI.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_ipi.ToString());

                // II
                TXT_VALOR_TOTAL_II.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_ii.ToString());

                // ICMS
                TXT_VALOR_TOTAL_ICMS_ST.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_icms_st.ToString());
                TXT_VALOR_TOTAL_ICMS.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_icms.ToString());

                // ICMS ST
                TXT_VALOR_TOTAL_BC_ICMS_ST.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_bc_icms_st.ToString());
                TXT_VALOR_TOTAL_BC_ICMS.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_bc_icms.ToString());

                // COFINS
                TXT_VALOR_TOTAL_COFINS.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_cofins.ToString());
                TXT_VALOR_TOTAL_COFINS_ST.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_cofins_st.ToString());
            }
            catch (Exception)
            {
                
                throw;
            }
      
        }



        //private void TotalNotaFiscal()
        //{

        //    DataTable dtNFItem = b_tb_nf_item.Dt_nf_item;
        //    DataTable dtNFItemICMS = b_tb_nf_item_imposto_icms.Dt_nf_item_imposto_icms;
        //    DataTable dtNFItemIPI = b_tb_nf_item_imposto_ipi.Dt_nf_item_imposto_ipi;
        //    DataTable dtNFItemCOFINS = b_tb_nf_item_imposto_cofins.Dt_nf_item_imposto_cofins;
        //    DataTable dtNFItemPIS = b_tb_nf_item_imposto_pis.Dt_nf_item_imposto_pis;
        //    DataTable dtNFItemISSQN = b_tb_nf_item_imposto_issqn.Dt_nf_item_imposto_issqn;
        //    DataTable dtNFItemII = b_tb_nf_item_imposto_ii.Dt_nf_item_imposto_ii;

        //    try
        //    {
        //       //  o_tb_empresa_imposto = b_tb_empresa_imposto.SelecionarObjetoPorId(Convert.ToInt32(DDL_ID_EMPRESA.SelectedValue));

        //        //decimal valor_aliq_cofins = o_tb_empresa_imposto.valor_aliq_cofins;
        //        //decimal valor_aliq_csll = o_tb_empresa_imposto.valor_aliq_csll;
        //        //decimal valor_aliq_icms = o_tb_empresa_imposto.valor_aliq_icms;
        //        //decimal valor_aliq_inss = o_tb_empresa_imposto.valor_aliq_inss_issqn;
        //        //decimal valor_aliq_ipi = o_tb_empresa_imposto.valor_aliq_ipi;
        //        //decimal valor_aliq_irpj = o_tb_empresa_imposto.valor_aliq_irpj;
        //        //decimal valor_aliq_issqn = o_tb_empresa_imposto.valor_aliq_issqn;
        //        //decimal valor_aliq_pis = o_tb_empresa_imposto.valor_aliq_pis;

          

        //        // ipi
        //        decimal valor_total_ipi = b_tb_nf_item_imposto_ipi.SomaValor(dtNFItemIPI, "valor_ipi");

        //        // pis
        //        decimal valor_total_pis = b_tb_nf_item_imposto_pis.SomaValor(dtNFItemPIS, "valor_pis");
        //        decimal valor_total_pis_st = b_tb_nf_item_imposto_pis.SomaValor(dtNFItemPIS, "valor_pis_st");

        //        // icms
        //        decimal valor_total_icms = b_tb_nf_item_imposto_icms.SomaValor(dtNFItemICMS, "valor_icms");
        //        decimal valor_total_icms_st = b_tb_nf_item_imposto_icms.SomaValor(dtNFItemICMS, "valor_icms_st");
        //        decimal valor_total_bc_icms = b_tb_nf_item_imposto_icms.SomaValor(dtNFItemICMS, "valor_bc_icms");
        //        decimal valor_total_bc_icms_st = b_tb_nf_item_imposto_icms.SomaValor(dtNFItemICMS, "valor_bc_icms_st");

        //        // issqn
        //        decimal valor_total_issqn = b_tb_nf_item_imposto_issqn.SomaValor(dtNFItemISSQN, "valor_issqn");
        //        decimal valor_total_bc_issqn = b_tb_nf_item_imposto_issqn.SomaValor(dtNFItemISSQN, "valor_bc_issqn");
        //        decimal valor_total_cofins_issqn = b_tb_nf_item_imposto_issqn.SomaValor(dtNFItemISSQN, "valor_issqn") ;
        //        decimal valor_total_pis_issqn = b_tb_nf_item_imposto_issqn.SomaValor(dtNFItemISSQN, "valor_issqn");

        //        // ii
        //        decimal valor_total_ii = b_tb_nf_item_imposto_ii.SomaValor(dtNFItemII, "valor_ii");

        //        // cofins
        //        decimal valor_total_cofins = b_tb_nf_item_imposto_cofins.SomaValor(dtNFItemCOFINS, "valor_cofins");
        //        decimal valor_total_cofins_st = b_tb_nf_item_imposto_cofins.SomaValor(dtNFItemCOFINS, "valor_cofins_st");

        //        // valor total nota fiscal
        //        decimal valor_total_desconto = b_tb_nf_item.SomaValor(dtNFItem, "valor_desconto");
        //        decimal valor_total_outro = b_tb_nf_item.SomaValor(dtNFItem, "valor_outro");
        //        decimal valor_total_frete = b_tb_nf_item.SomaValor(dtNFItem, "valor_frete");
        //        decimal valor_total_seguro = b_tb_nf_item.SomaValor(dtNFItem, "valor_seguro");
        //        decimal valor_total_servico = b_tb_nf_item.SomaValor(dtNFItem, "valor_unitario", string.Format("id_tipo_item in ({0})", (int)PUB_ENUM.TIPO_ITEM.Servicos));
        //        decimal valor_total_produto = b_tb_nf_item.SomaValor(dtNFItem, "valor_unitario", string.Format("id_tipo_item not in ({0})", (int)PUB_ENUM.TIPO_ITEM.Servicos));

        //        // calculo total nota fiscal
        //        decimal valor_total_nota_fiscal = valor_total_produto - valor_total_desconto + valor_total_icms_st + valor_total_frete + valor_total_outro + valor_total_ipi + valor_total_ii + valor_total_servico;

        //        // nf_item

        //        TXT_VALOR_TOTAL_OUTRO.Text = PUB_FUNCOES.FormataNumerico(valor_total_outro.ToString());         //  +
        //        TXT_VALOR_TOTAL_PRODUTO.Text = PUB_FUNCOES.FormataNumerico(valor_total_produto.ToString());     //  +
        //        TXT_VALOR_TOTAL_SERVICO.Text = PUB_FUNCOES.FormataNumerico(valor_total_servico.ToString());     //  +
        //        TXT_VALOR_TOTAL_SEGURO.Text = PUB_FUNCOES.FormataNumerico(valor_total_seguro.ToString());       //  +
        //        TXT_VALOR_TOTAL_FRETE.Text = PUB_FUNCOES.FormataNumerico(valor_total_frete.ToString());         //  -
        //        TXT_VALOR_TOTAL_DESCONTO.Text = PUB_FUNCOES.FormataNumerico(valor_total_desconto.ToString());   //  =
        //        TXT_VALOR_TOTAL_NOTA_FISCAL.Text = PUB_FUNCOES.FormataNumerico(valor_total_nota_fiscal.ToString());

        //        TXT_VALOR_TOTAL_RET_PREV.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_ret_prev.ToString());
        //        TXT_VALOR_TOTAL_RET_PIS.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_ret_pis.ToString());
        //        TXT_VALOR_TOTAL_RET_CSLL.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_ret_csll.ToString());
        //        TXT_VALOR_TOTAL_RET_COFINS.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_ret_cofins.ToString());
        //        TXT_VALOR_TOTAL_BC_RET_PREV.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_bc_ret_prev.ToString());
        //        TXT_VALOR_TOTAL_IRRF.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_irrf.ToString());
        //        TXT_VALOR_TOTAL_BC_IRRF.Text = PUB_FUNCOES.FormataNumerico(o_tb_nf.valor_total_bc_irrf.ToString());

        //        if (Equals(Id_operacao, (int)PUB_ENUM.NF_OPERACAO.SAIDA))
        //        {
        //            // ISSQN
        //            TXT_VALOR_TOTAL_COFINS_ISSQN.Text = PUB_FUNCOES.FormataNumerico(valor_total_cofins_issqn.ToString());
        //            TXT_VALOR_TOTAL_PIS_ISSQN.Text = PUB_FUNCOES.FormataNumerico(valor_total_pis_issqn.ToString());
        //            TXT_VALOR_TOTAL_BC_ISSQN.Text = PUB_FUNCOES.FormataNumerico(valor_total_bc_issqn.ToString());
        //            TXT_VALOR_TOTAL_ISSQN.Text = PUB_FUNCOES.FormataNumerico(valor_total_issqn.ToString());
        //        }

        //        // PIS
        //        TXT_VALOR_TOTAL_PIS_ST.Text = PUB_FUNCOES.FormataNumerico(valor_total_pis_st.ToString());
        //        TXT_VALOR_TOTAL_PIS.Text = PUB_FUNCOES.FormataNumerico(valor_total_pis.ToString());

        //        // IPI
        //        TXT_VALOR_TOTAL_IPI.Text = PUB_FUNCOES.FormataNumerico(valor_total_ipi.ToString());

        //        // II
        //        TXT_VALOR_TOTAL_II.Text = PUB_FUNCOES.FormataNumerico(valor_total_ii.ToString());

        //        // ICMS
        //        TXT_VALOR_TOTAL_ICMS_ST.Text = PUB_FUNCOES.FormataNumerico(valor_total_icms_st.ToString());
        //        TXT_VALOR_TOTAL_ICMS.Text = PUB_FUNCOES.FormataNumerico(valor_total_icms.ToString());

        //        // ICMS ST
        //        TXT_VALOR_TOTAL_BC_ICMS_ST.Text = PUB_FUNCOES.FormataNumerico(valor_total_bc_icms_st.ToString());
        //        TXT_VALOR_TOTAL_BC_ICMS.Text = PUB_FUNCOES.FormataNumerico(valor_total_bc_icms.ToString());

        //        // COFINS
        //        TXT_VALOR_TOTAL_COFINS.Text = PUB_FUNCOES.FormataNumerico(valor_total_cofins.ToString());
        //        TXT_VALOR_TOTAL_COFINS_ST.Text = PUB_FUNCOES.FormataNumerico(valor_total_cofins_st.ToString());


        //    }
        //    catch (Exception)
        //    {

        //        throw;
        //    }
        //    finally
        //    {
        //        dtNFItem.Dispose();
        //        dtNFItemCOFINS.Dispose();
        //        dtNFItemICMS.Dispose();
        //        dtNFItemII.Dispose();
        //        dtNFItemIPI.Dispose();
        //        dtNFItemISSQN.Dispose();
        //        dtNFItemPIS.Dispose();
        //    }
         
            
        //}
     
        private int IncluirNF()
        {
            try
            {
                int id_nf = 0;

                
                    o_tb_nf.chave = TXT_CHAVE.Text;
                    o_tb_nf.id_mod_doc_fiscal = DDL_ID_MOD_DOC_FISCAL.SelectedValue;
                    o_tb_nf.id_operacao = id_operacao;

                    o_tb_nf.id_empresa = Convert.ToInt32(DDL_ID_EMPRESA.SelectedValue);
                    o_tb_nf.digito_verificador = 0;
                    o_tb_nf.protocolo = TXT_PROTOCOLO.Text;

                    if (TXT_ID_ORDEM_SERVICO.Text != string.Empty)
                        o_tb_nf.id_ordem_servico = Convert.ToInt32(TXT_ID_ORDEM_SERVICO.Text);

                    if (TXT_ID_PEDIDO.Text != string.Empty)
                        o_tb_nf.id_pedido = Convert.ToInt32(TXT_ID_PEDIDO.Text);

                    o_tb_nf.id_cadastro = Convert.ToInt32(TXT_ID_CLI_FOR.Text);
                    o_tb_nf.id_tipo_frete = Convert.ToInt32(DDL_ID_TIPO_FRETE.SelectedValue);
                    o_tb_nf.id_forma_pagamento = Convert.ToInt32(DDL_ID_FORMA_PAGAMENTO.SelectedValue);
                    o_tb_nf.id_condicao_pagamento = Convert.ToInt32(DDL_ID_CONDICAO_PAGAMENTO.SelectedValue);
                    o_tb_nf.id_endereco_retirada = Convert.ToInt32(DDL_ID_ENDERECO_RETIRADA.SelectedValue);
                    o_tb_nf.id_endereco_entrega = Convert.ToInt32(DDL_ID_ENDERECO_ENTREGA.SelectedValue);
                    o_tb_nf.id_usuario_vendedor = Convert.ToInt32(DDL_ID_USUARIO_VENDEDOR.SelectedValue);
                    o_tb_nf.id_usuario_criador = Convert.ToInt32(PUB_SESSAO.Id);
                    o_tb_nf.id_status = Convert.ToInt32(DDL_ID_STATUS.SelectedValue);
                    o_tb_nf.num_nota_fiscal = Convert.ToInt32(TXT_NUM_NOTA_FISCAL.Text);
                    o_tb_nf.serie = Convert.ToInt32(TXT_SERIE.Text);
                    o_tb_nf.dt_emissao = Convert.ToDateTime(TXT_DT_EMISSAO.Text);
                    if (TXT_DT_ENTRADA_SAIDA.Text != string.Empty)
                        o_tb_nf.dt_entrada_saida = Convert.ToDateTime(TXT_DT_ENTRADA_SAIDA.Text);

                    o_tb_nf.id_forma_impressao = Convert.ToInt32(DDL_ID_FORMA_IMPRESSAO.SelectedValue);
                    o_tb_nf.id_ambiente = Convert.ToInt32(DDL_ID_AMBIENTE.SelectedValue);
                    o_tb_nf.id_processo_emissao = Convert.ToInt32( DDL_ID_PROCESSO_EMISSAO.SelectedValue);
                    o_tb_nf.id_versao = Convert.ToInt32(DDL_VERSAO_APLICATIVO.SelectedValue);

                    o_tb_nf.id_tipo_emissao = Convert.ToInt32(DDL_ID_TIPO_EMISSAO.SelectedValue);
                    o_tb_nf.id_finalidade = Convert.ToInt32(DDL_ID_FINALIDADE.SelectedValue);
                    o_tb_nf.cfop = Convert.ToInt32(TXT_CFOP.Text);

                    if (TXT_DT_CONTINGENCIA.Text != string.Empty)
                        o_tb_nf.dt_contingencia = Convert.ToDateTime(PUB_FUNCOES.TrataData(TXT_DT_CONTINGENCIA.Text));
                    o_tb_nf.versao_aplicativo = "2.0";
                    o_tb_nf.desc_justificativa = TXT_DESC_JUSTIFICATIVA.Text;

                    o_tb_nf.valor_total_bc_icms = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_BC_ICMS.Text));
                    o_tb_nf.valor_total_icms = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_ICMS.Text));
                    o_tb_nf.valor_total_bc_icms_st = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_BC_ICMS_ST.Text));
                    o_tb_nf.valor_total_icms_st = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_ICMS_ST.Text));
                    o_tb_nf.valor_total_produto = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_PRODUTO.Text));
                    o_tb_nf.valor_total_frete = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_FRETE.Text));
                    o_tb_nf.valor_total_seguro = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_SEGURO.Text));
                    o_tb_nf.valor_total_desconto = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_DESCONTO.Text));
                    o_tb_nf.valor_total_outro = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_OUTRO.Text));
                    o_tb_nf.valor_total_ii = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_II.Text));
                    o_tb_nf.valor_total_ipi = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_IPI.Text));
                    o_tb_nf.valor_total_pis = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_PIS.Text));
                    o_tb_nf.valor_total_pis_st = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_PIS_ST.Text));
                    o_tb_nf.valor_total_cofins = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_COFINS.Text));
                    o_tb_nf.valor_total_cofins_st = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_COFINS_ST.Text));
                    o_tb_nf.valor_total_nota_fiscal = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_NOTA_FISCAL.Text));
                    o_tb_nf.valor_total_bc_issqn = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_BC_ISSQN.Text));
                    o_tb_nf.valor_total_servico = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_SERVICO.Text));
                    o_tb_nf.valor_total_pis_issqn = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_PIS_ISSQN.Text));
                    o_tb_nf.valor_total_cofins_issqn = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_COFINS_ISSQN.Text));
                    o_tb_nf.valor_total_issqn = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_ISSQN.Text));
                    o_tb_nf.valor_total_ret_pis = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_RET_PIS.Text));
                    o_tb_nf.valor_total_ret_cofins = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_RET_COFINS.Text));
                    o_tb_nf.valor_total_ret_csll = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_RET_CSLL.Text));
                    o_tb_nf.valor_total_bc_irrf = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_BC_IRRF.Text));
                    o_tb_nf.valor_total_irrf = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_IRRF.Text));
                    o_tb_nf.valor_total_bc_ret_prev = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_BC_RET_PREV.Text));
                    o_tb_nf.valor_total_ret_prev = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_RET_PREV.Text));


                    if (HF_ID.Value != string.Empty)
                    {

                        o_tb_nf.id = Convert.ToInt32(HF_ID.Value);
                        b_tb_nf.Alterar(o_tb_nf);

                    }
                    else
                    {
                        id_nf = b_tb_nf.Incluir(o_tb_nf);
                    }



                

                return id_nf;                                                            


            }
            catch (Exception)
            {
                
                throw;
            }
            
        }


        private void IncluirNFItem()
        {

            try
            {
 
                int id_produto_servico = Convert.ToInt32(TXT_ID_PRODUTO_SERVICO.Text);
                o_tb_produto = b_tb_produto.SelecionarObjetoPorId(id_produto_servico);
                o_tb_produto_imposto = b_tb_produto_imposto.SelecionarObjetoPorId(o_tb_produto.id);
                       
                o_tb_nf_item.id_nf = Convert.ToInt32(HF_ID.Value);
                o_tb_nf_item.id_produto_servico = id_produto_servico;
                o_tb_nf_item.id_tipo_item = o_tb_produto.id_tipo_item;
                o_tb_nf_item.ean = o_tb_produto.ean.ToString();
                o_tb_nf_item.descricao = TXT_DESCRICAO.Text;
                o_tb_nf_item.id_ncm = o_tb_produto.id_ncm;
                o_tb_nf_item.extipi = o_tb_produto.extipi.ToString();
                o_tb_nf_item.id_genero_produto_servico = o_tb_produto.id_genero_produto_servico;
                if(TXT_CFOP_ITEM.Text != string.Empty)
                o_tb_nf_item.cfop = Convert.ToInt32(TXT_CFOP_ITEM.Text);
                if(TXT_QTD.Text != string.Empty)
                o_tb_nf_item.qtd = Convert.ToDecimal(TXT_QTD.Text);
                o_tb_nf_item.qtd_trib = Convert.ToDecimal(TXT_QTD.Text);
                o_tb_nf_item.id_unidade_medida = Convert.ToInt32(DDL_ID_UNIDADE_MEDIDA.SelectedValue);
                o_tb_nf_item.desc_unid_medida = DDL_ID_UNIDADE_MEDIDA.Text;
                o_tb_nf_item.desc_unid_medida_trib = DDL_ID_UNIDADE_MEDIDA.Text;
                o_tb_nf_item.valor_unitario = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_UNITARIO.Text));
                o_tb_nf_item.valor_unitario_trib = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_UNITARIO.Text));
                o_tb_nf_item.valor_frete = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_FRETE.Text));
                o_tb_nf_item.valor_seguro = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_SEGURO.Text));
                o_tb_nf_item.valor_desconto = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_DESCONTO.Text));
                o_tb_nf_item.valor_outro = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_OUTRO.Text));
                o_tb_nf_item.valor_total = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_ITEM.Text));

                if (CHK_IND_TOTAL_NOTA.Checked)
                {
                    o_tb_nf_item.ind_total_nota = 1;
                }
                else
                {
                    o_tb_nf_item.ind_total_nota = 0;
                }

                // inclui o item
                Id_nf_item = b_tb_nf_item.Incluir(o_tb_nf_item);

                // passa a variavel                

            }
            catch (Exception)
            {
                
                throw;
            }

              

        }

        private void IncluirNFItemICMS()
        {
            try
            {
                
                // a variavel global do id item
                o_tb_nf_item_imposto_icms.id_nf_item = Id_nf_item;     
         
                if(DDL_ID_ORIGEM_PRODUTO.SelectedValue != string.Empty)
                o_tb_nf_item_imposto_icms.id_origem_produto = Convert.ToInt32(DDL_ID_ORIGEM_PRODUTO.SelectedValue);
                if(DDL_ID_CST_ICMS.SelectedValue !=string.Empty)
                o_tb_nf_item_imposto_icms.id_cst_icms = DDL_ID_CST_ICMS.SelectedValue;
                if(DDL_ID_CSOSN.SelectedValue != string.Empty)
                o_tb_nf_item_imposto_icms.id_csosn = Convert.ToInt32(DDL_ID_CSOSN.SelectedValue);
                if(DDL_ID_MOD_BC_ICMS.SelectedValue != string.Empty)
                o_tb_nf_item_imposto_icms.id_mod_bc_icms = Convert.ToInt32(DDL_ID_MOD_BC_ICMS.SelectedValue);
                
                o_tb_nf_item_imposto_icms.valor_aliq_red_bc_icms = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_RED_BC_ICMS.Text));
                o_tb_nf_item_imposto_icms.valor_bc_icms = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_BC_ICMS.Text));
                o_tb_nf_item_imposto_icms.valor_aliq_icms =  Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_ICMS.Text));
                o_tb_nf_item_imposto_icms.valor_icms =   Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ICMS.Text));
                if(DDL_ID_MOD_BC_ICMS_ST.SelectedValue != string.Empty)
                o_tb_nf_item_imposto_icms.id_mod_bc_icms_st =   Convert.ToInt32(DDL_ID_MOD_BC_ICMS_ST.SelectedValue);
                o_tb_nf_item_imposto_icms.valor_aliq_icms_mva_st =  Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_ICMS_MVA_ST.Text));
                o_tb_nf_item_imposto_icms.valor_aliq_red_bc_icms_st =  Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_RED_BC_ICMS_ST.Text));
                o_tb_nf_item_imposto_icms.valor_bc_icms_st=  Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_BC_ICMS_ST.Text));
                o_tb_nf_item_imposto_icms.valor_aliq_icms_st =  Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_ICMS_ST.Text));
                o_tb_nf_item_imposto_icms.valor_icms_st =  Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ICMS_ST.Text));
                o_tb_nf_item_imposto_icms.valor_bc_icms_st_ret =  Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_BC_ICMS_ST_RET.Text));
                o_tb_nf_item_imposto_icms.valor_icms_st_ret=  Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ICMS_ST_RET.Text));
                o_tb_nf_item_imposto_icms.valor_bc_icms_st_dest=  Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_BC_ICMS_ST_DEST.Text));
                o_tb_nf_item_imposto_icms.valor_icms_st_dest=  Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ICMS_ST_DEST.Text));
                if(DDL_ID_MOT_DESONERACAO_ICMS.SelectedValue != string.Empty)
                o_tb_nf_item_imposto_icms.id_mot_desoneracao_icms=  Convert.ToInt32(DDL_ID_MOT_DESONERACAO_ICMS.SelectedValue);
                o_tb_nf_item_imposto_icms.valor_aliq_bc_op_propria =  Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_BC_OP_PROPRIA.Text));
                if(DDL_UF_ST.SelectedValue != string.Empty)
                o_tb_nf_item_imposto_icms.uf_st  =  DDL_UF_ST.Text;
                o_tb_nf_item_imposto_icms.valor_aliq_cred_sn =  Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_CRED_SN.Text));
                o_tb_nf_item_imposto_icms.valor_cred_icms_sn = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_CRED_ICMS_SN.Text));

                b_tb_nf_item_imposto_icms.Incluir(o_tb_nf_item_imposto_icms);


                

            }
            catch (Exception)
            {
                
                throw;
            }

        }

        private void IncluirNFItemII()
        {
            try
            {
                if (TXT_VALOR_BC_II.Text != string.Empty && TXT_VALOR_DESP_ADU.Text != string.Empty && TXT_VALOR_II.Text != string.Empty)
                {
                    o_tb_nf_item_imposto_ii.id_nf_item = Id_nf_item;
                    o_tb_nf_item_imposto_ii.valor_bc_ii = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_BC_II.Text));
                    o_tb_nf_item_imposto_ii.valor_desp_adu = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_DESP_ADU.Text));
                    o_tb_nf_item_imposto_ii.valor_ii = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_II.Text));
                    o_tb_nf_item_imposto_ii.valor_iof = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_IOF.Text));
                    b_tb_nf_item_imposto_ii.Incluir(o_tb_nf_item_imposto_ii);
                }
                
            }
            catch (Exception)
            {
                
                throw;
            }
         
        }


        private void IncluirNFItemIPI()
        {

            try
            {

                    // a variavel global do id item
                    o_tb_nf_item_imposto_ipi.id_nf_item = Id_nf_item;

                    if (DDL_ID_CST_IPI.SelectedValue != string.Empty)
                    {
                        o_tb_nf_item_imposto_ipi.id_cst_ipi = DDL_ID_CST_IPI.SelectedValue;
                        o_tb_nf_item_imposto_ipi.valor_bc_ipi = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_BC_IPI.Text));
                        o_tb_nf_item_imposto_ipi.valor_aliq_ipi = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_IPI.Text));
                        o_tb_nf_item_imposto_ipi.valor_ipi = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_IPI.Text));
                        o_tb_nf_item_imposto_ipi.classe_enquadramento = TXT_CLASS_ENQUADRAMENTO.Text;
                        o_tb_nf_item_imposto_ipi.cnpj_produtor = TXT_CNPJ_PRODUTOR.Text;
                        o_tb_nf_item_imposto_ipi.codigo_selo_ipi = TXT_CODIGO_SELO_IPI.Text;
                        o_tb_nf_item_imposto_ipi.qtd_selo_ipi = Convert.ToInt32(TXT_QTD_SELO_IPI.Text);
                        o_tb_nf_item_imposto_ipi.codigo_enquadramento_ipi = TXT_CODIGO_ENQUADRAMENTO_IPI.Text;
                        o_tb_nf_item_imposto_ipi.qtd_unid_trib_ipi = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_QTD_UNID_TRIB_IPI.Text));
                        o_tb_nf_item_imposto_ipi.valor_unid_trib_ipi = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_UNID_TRIB_IPI.Text));

                        b_tb_nf_item_imposto_ipi.Incluir(o_tb_nf_item_imposto_ipi);
                    }
                    
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        private void IncluirNFItemCOFINS()
        {

            try
            {
                // a variavel global do id item
                o_tb_nf_item_imposto_cofins.id_nf_item = Id_nf_item;

                if (DDL_ID_CST_COFINS.SelectedValue != string.Empty)
                {
                    o_tb_nf_item_imposto_cofins.id_cst_cofins = DDL_ID_CST_COFINS.SelectedValue;
                    o_tb_nf_item_imposto_cofins.valor_bc_cofins = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_BC_COFINS.Text));
                    o_tb_nf_item_imposto_cofins.valor_aliq_cofins = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_COFINS.Text));
                    o_tb_nf_item_imposto_cofins.valor_cofins = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_COFINS.Text));
                    o_tb_nf_item_imposto_cofins.qtd_bc_cofins_prod = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_QTD_BC_COFINS_PROD.Text));
                    o_tb_nf_item_imposto_cofins.valor_aliq_cofins_prod = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_COFINS_PROD.Text));
                    b_tb_nf_item_imposto_cofins.Incluir(o_tb_nf_item_imposto_cofins);
                }
                                

            }
            catch (Exception)
            {
                
                throw;
            }

        }

        private void IncluirNFItemCOFINSST()
        {

            try
            {
                OBJ_TB_NF_ITEM_IMPOSTO_COFINS_ST o_tb_nf_item_imposto_cofins_st = new OBJ_TB_NF_ITEM_IMPOSTO_COFINS_ST();
                BLL_TB_NF_ITEM_IMPOSTO_COFINS_ST b_tb_nf_item_imposto_cofins_st = new BLL_TB_NF_ITEM_IMPOSTO_COFINS_ST();
                // a variavel global do id item
                o_tb_nf_item_imposto_cofins_st.id_nf_item = Id_nf_item;
                o_tb_nf_item_imposto_cofins_st.valor_bc_cofins_st = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_BC_COFINS_ST.Text));
                o_tb_nf_item_imposto_cofins_st.valor_aliq_cofins_st = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_COFINS_ST.Text));
                o_tb_nf_item_imposto_cofins_st.valor_cofins_st = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_COFINS_ST.Text));
                o_tb_nf_item_imposto_cofins_st.qtd_bc_cofins_st_prod = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_QTD_BC_COFINS_ST_PROD.Text));
                o_tb_nf_item_imposto_cofins_st.valor_aliq_cofins_st_prod = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_COFINS_ST_PROD.Text));

                b_tb_nf_item_imposto_cofins_st.Incluir(o_tb_nf_item_imposto_cofins_st);
                

            }
            catch (Exception)
            {

                throw;
            }

        }


        private void IncluirNFItemPIS()
        {

            try
            {
                // a variavel global do id item
                o_tb_nf_item_imposto_pis.id_nf_item = Id_nf_item;

                if (DDL_ID_CST_PIS.SelectedValue != string.Empty)
                    o_tb_nf_item_imposto_pis.id_cst_pis = DDL_ID_CST_PIS.SelectedValue;
                o_tb_nf_item_imposto_pis.valor_bc_pis = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_BC_PIS.Text));
                o_tb_nf_item_imposto_pis.valor_aliq_pis = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_PIS.Text));
                o_tb_nf_item_imposto_pis.valor_pis = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_PIS.Text));
                o_tb_nf_item_imposto_pis.qtd_bc_prod_pis = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_QTD_BC_PROD_PIS.Text));
                o_tb_nf_item_imposto_pis.valor_aliq_prod_pis = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_PROD_PIS.Text));
 
                b_tb_nf_item_imposto_pis.Incluir(o_tb_nf_item_imposto_pis);

                
            }
            catch (Exception)
            {

                throw;
            }

        }


        private void IncluirNFItemPISST()
        {

            try
            {

                OBJ_TB_NF_ITEM_IMPOSTO_PIS_ST o_tb_nf_item_imposto_pis_st = new OBJ_TB_NF_ITEM_IMPOSTO_PIS_ST();
                BLL_TB_NF_ITEM_IMPOSTO_PIS_ST b_tb_nf_item_imposto_pis_st = new BLL_TB_NF_ITEM_IMPOSTO_PIS_ST();

                // a variavel global do id item
                o_tb_nf_item_imposto_pis_st.id_nf_item = Id_nf_item;

                o_tb_nf_item_imposto_pis_st.valor_bc_pis_st = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_BC_PIS_ST.Text));
                o_tb_nf_item_imposto_pis_st.valor_aliq_pis_st = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_PIS_ST.Text));
                o_tb_nf_item_imposto_pis_st.valor_pis_st = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_PIS_ST.Text));
                o_tb_nf_item_imposto_pis_st.qtd_bc_prod_pis_st = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_QTD_BC_PROD_PIS_ST.Text));
                o_tb_nf_item_imposto_pis_st.valor_aliq_prod_pis_st = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_PROD_PIS_ST.Text));

                b_tb_nf_item_imposto_pis_st.Incluir(o_tb_nf_item_imposto_pis_st);


            }
            catch (Exception)
            {

                throw;
            }

        }

        private void IncluirNFItemISSQN()
        {

            try 
	        {
                // a variavel global do id item
                o_tb_nf_item_imposto_issqn.id_nf_item = Id_nf_item;

                o_tb_nf_item_imposto_issqn.valor_bc_issqn = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_BC_ISSQN.Text));
                o_tb_nf_item_imposto_issqn.valor_aliq_issqn = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_ISSQN.Text));
                o_tb_nf_item_imposto_issqn.valor_issqn = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ISSQN.Text));
                if(DDL_MUNICIPIO_FG.SelectedValue != string.Empty)
                o_tb_nf_item_imposto_issqn.municipio_fg = DDL_MUNICIPIO_FG.SelectedValue;
                if(DDL_ID_SERVICO_ISSQN.SelectedValue != string.Empty)
                o_tb_nf_item_imposto_issqn.id_servico_issqn = Convert.ToInt32(DDL_ID_SERVICO_ISSQN.SelectedValue);
                if(DDL_SIT_TRIB_ISSQN.SelectedValue != string.Empty)
                o_tb_nf_item_imposto_issqn.sit_trib_issqn = DDL_SIT_TRIB_ISSQN.SelectedValue;


                b_tb_nf_item_imposto_issqn.Incluir(o_tb_nf_item_imposto_issqn);

                //b_tb_nf_item_imposto_issqn.PreencheDataTable(b_tb_nf_item_imposto_issqn.Dt_nf_item_imposto_issqn, o_tb_nf_item_imposto_issqn);
		
	        }
	        catch (Exception)
	        {
		
		        throw;
	        }
      


        }

        private void IncluirNFTransportadora()
        {
            try
            {

                // TRANSPORTADORA
                o_tb_nf_transp = b_tb_nf_transp.SelecionarObjetoPorId(Convert.ToInt32(HF_ID.Value));

                o_tb_nf_transp.id_nf = Convert.ToInt32(HF_ID.Value);
                o_tb_nf_transp.id_cadastro = Convert.ToInt32(DDL_ID_TRANSPORTADORA.SelectedValue);

                if (o_tb_nf_transp == null)
                {

                    if (DDL_ID_TRANSPORTADORA.SelectedValue != string.Empty)
                    { 
                        b_tb_nf_transp.Incluir(o_tb_nf_transp);
                    }

                }
                else
                {
                    b_tb_nf_transp.Alterar(o_tb_nf_transp);
                }


                // VEICULO 

                o_tb_nf_transp_veiculo = b_tb_nf_transp_veiculo.SelecionarObjetoPorId(Convert.ToInt32(HF_ID.Value));
                o_tb_nf_transp_veiculo.id_nf = Convert.ToInt32(HF_ID.Value);
                o_tb_nf_transp_veiculo.placa = TXT_PLACA_TRANSP.Text;
                o_tb_nf_transp_veiculo.uf = DDL_UF_TRANSP.SelectedValue;
                o_tb_nf_transp_veiculo.RNTC = TXT_RNTC_TRANSP.Text;

                if (o_tb_nf_transp_veiculo == null)
                {
                    if (TXT_PLACA_TRANSP.Text != string.Empty && DDL_UF_TRANSP.SelectedValue != string.Empty && TXT_RNTC_TRANSP.Text != string.Empty)
                    {                
                        b_tb_nf_transp_veiculo.Incluir(o_tb_nf_transp_veiculo);
                    }
                }
                else
                {
                    b_tb_nf_transp_veiculo.Alterar(o_tb_nf_transp_veiculo);
                }


                // TRANSPORTADORA TRIBUTO RETIDO

                o_tb_nf_transp_trib_ret = b_tb_nf_transp_trib_ret.SelecionarObjetoPorId(Convert.ToInt32(HF_ID.Value));
                o_tb_nf_transp_trib_ret.id_nf = Convert.ToInt32(HF_ID.Value);
                o_tb_nf_transp_trib_ret.cfop = Convert.ToInt32(TXT_CFOP_TRANSP.Text);
                o_tb_nf_transp_trib_ret.valor_servico = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_SERVICO_TRANSP.Text));
                o_tb_nf_transp_trib_ret.valor_bc_icms_ret = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_BC_ICMS_RET_TRANSP.Text));
                o_tb_nf_transp_trib_ret.valor_aliq_icms_ret = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ALIQ_ICMS_RET_TRANSP.Text));
                o_tb_nf_transp_trib_ret.valor_icms_ret = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_ICMS_RET_TRANSP.Text));
                o_tb_nf_transp_trib_ret.cidade_ibge_gerador = TXT_CIDADE_IBGE_GERADOR_TRANSP.Text;

                if (o_tb_nf_transp_trib_ret == null)
                {
                    if (TXT_VALOR_SERVICO_TRANSP.Text != string.Empty && TXT_VALOR_BC_ICMS_RET_TRANSP.Text != string.Empty && TXT_VALOR_ALIQ_ICMS_RET_TRANSP.Text != string.Empty && TXT_VALOR_ICMS_RET_TRANSP.Text != string.Empty)
                    {
                        b_tb_nf_transp_trib_ret.Incluir(o_tb_nf_transp_trib_ret);
                    }

                }
                else
                {
                    b_tb_nf_transp_trib_ret.Alterar(o_tb_nf_transp_trib_ret);
                }

                // VOLUME TRANSPORTADORA

                o_tb_nf_transp_volume = b_tb_nf_transp_volume.SelecionarObjetoPorId(Convert.ToInt32(HF_ID.Value));
                o_tb_nf_transp_volume.id_nf = Convert.ToInt32(HF_ID.Value);
                o_tb_nf_transp_volume.qVol = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_QVOL_TRANSP.Text));
                o_tb_nf_transp_volume.esp = TXT_ESP_TRANSP.Text;
                o_tb_nf_transp_volume.marca = TXT_MARCA_TRANSP.Text;
                o_tb_nf_transp_volume.nVol = TXT_NVOL_TRANSP.Text;
                o_tb_nf_transp_volume.pesoL = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_PESOL_TRANSP.Text));
                o_tb_nf_transp_volume.pesoB = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_PESOB_TRANSP.Text));


                if (o_tb_nf_transp_volume == null)
                {
                    if (TXT_QVOL_TRANSP.Text != string.Empty || TXT_PESOL_TRANSP.Text != string.Empty && TXT_MARCA_TRANSP.Text != string.Empty || TXT_NVOL_TRANSP.Text != string.Empty)
                    {

                        b_tb_nf_transp_volume.Incluir(o_tb_nf_transp_volume);
                    }
                }
                else
                {

                    b_tb_nf_transp_volume.Alterar(o_tb_nf_transp_volume);
                }

              

  
            }
            catch (Exception)
            {
                
                throw;
            }

         
        }
 

        private void IncluirNFObservacao()
        {
            try
            {
                o_tb_nf_info_adicional = b_tb_nf_info_adicional.SelecionarObjetoPorId(Convert.ToInt32(HF_ID.Value));
                // a variavel global do id item
                o_tb_nf_info_adicional.id_nf = Convert.ToInt32(HF_ID.Value);
                o_tb_nf_info_adicional.infAdFisco = TXT_INFADFISCO.Text;
                o_tb_nf_info_adicional.infCpl = TXT_INFCPL.Text;

                if (o_tb_nf_info_adicional == null)
                {
   
                    b_tb_nf_info_adicional.Incluir(o_tb_nf_info_adicional);

                }
                else
                {
                    b_tb_nf_info_adicional.Alterar(o_tb_nf_info_adicional);
                }

              

            }
            catch (Exception)
            {
                
                throw;
            }


        }


        private void AlterarNFObservacao()
        {
            try
            {

                // a variavel global do id item
                o_tb_nf_info_adicional.id_nf = Convert.ToInt32(HF_ID.Value);
                o_tb_nf_info_adicional.infAdFisco = TXT_INFADFISCO.Text;
                o_tb_nf_info_adicional.infCpl = TXT_INFCPL.Text;

                b_tb_nf_info_adicional.Alterar(o_tb_nf_info_adicional);

            }
            catch (Exception)
            {

                throw;
            }


        }

        protected void DDL_ID_FORMA_PAGAMENTO_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDL_ID_FORMA_PAGAMENTO.SelectedValue != string.Empty)
            {
                b_tb_condicao_pagamento.PreencheControleWeb(DDL_ID_CONDICAO_PAGAMENTO, string.Format("tb_condicao_pagamento.id_forma_pagamento={0}",DDL_ID_FORMA_PAGAMENTO.SelectedValue), "", false);
            }
        }

        protected void DDL_ID_PROCESSO_EMISSAO_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void IMG_BTN_PRIMEIRO_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = 0;
            CarregaGrid();
        }

        protected void IMG_BTN_ANTERIOR_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = PUB_PAGINACAO.PageIndex - 1;
            CarregaGrid();
        }

        protected void IMG_BTN_PROXIMO_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = PUB_PAGINACAO.PageIndex + 1;
            CarregaGrid();
        }

        protected void IMG_BTN_ULTIMO_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = PUB_PAGINACAO.TotalDePaginas - 1;
            CarregaGrid();
        }
        protected void GRV_TB_NF_ITEM_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GRV_TB_NF_ITEM.PageIndex = e.NewPageIndex;
            PUB_PAGINACAO.PageIndex = e.NewPageIndex;
            CarregaGrid();
        }

        public void CarregaGrid()
        {

            try
            {
                StringBuilder sb = new StringBuilder();

                DataSet ds = new DataSet();
                List<string> lista = new List<string>();              

                lista.Add(string.Format(" tb_nf_item.id_nota_fiscal = {0}", HF_ID.Value));

                sb.Append(string.Join(" and ", lista.ToArray()));


                ds = b_tb_nf_item.Selecionar(sb.ToString(), PUB_PAGINACAO.Sort, PUB_PAGINACAO.PageIndex, PUB_PAGINACAO.PageSize);

                if (ds.Tables[0].Rows.Count > 0)
                {
                    GRV_TB_NF_ITEM.DataSource = ds;
                    GRV_TB_NF_ITEM.DataBind();
                    PUB_PAGINACAO.Paginacao(true);
                }
                else
                {
                    GRV_TB_NF_ITEM.EmptyDataText = "Nenhum registro foi encontrado";
                    GRV_TB_NF_ITEM.DataBind();
                }
            }
            catch (Exception)
            {

                throw;
            }



        }


        public OBJ_TB_NF_PARAMETRO Parametro
        {
            get {
                if (ViewState["nf_parametro"] == null)
                {
                    Parametro = new OBJ_TB_NF_PARAMETRO();
                }
                return (OBJ_TB_NF_PARAMETRO)ViewState["nf_parametro"];
            }
            set { ViewState["nf_parametro"] = value; }
        }

        protected void DDL_ID_EMPRESA_SelectedIndexChanged(object sender, EventArgs e)
        {
            int id_empresa = 0;          
            try 
	        {	        
		        if (DDL_ID_EMPRESA.SelectedValue != string.Empty)
                {   
                           
                    id_empresa = Convert.ToInt32(DDL_ID_EMPRESA.SelectedValue);               
                    o_tb_nf_parametro = b_tb_nf_parametro.SelecionarObjetoPorIdEmpresa(Convert.ToInt32(DDL_ID_EMPRESA.SelectedValue));

                    if (o_tb_nf_parametro == null)
                    {
                        Master.MSG_ALERTA("Favor configurar os parâmetros de NFe.","../nf_parametro/nf_parametro_formulario.aspx",false);
                    }
                    else
                    {

                        if (Equals(id_operacao, (int)PUB_ENUM.NF_OPERACAO.SAIDA))
                        {

                            o_tb_nf_numeracao = b_tb_nf_numeracao.NumeroNotaFiscal(id_empresa);
                            TXT_NUM_NOTA_FISCAL.Text = o_tb_nf_numeracao.num_nota_fiscal.ToString();
                            TXT_SERIE.Text = o_tb_nf_numeracao.serie.ToString();
                            TXT_NUM_NOTA_FISCAL.Enabled = false;
                            TXT_SERIE.Enabled = false;


                            // SAIDA ENDERECO RETIRADA 
                            DDL_ID_ENDERECO_RETIRADA.Items.Clear();
                            foreach (OBJ_TB_ENDERECO_EMPRESA o_tb_endereco_empresa in b_tb_endereco_empresa.SelecionarLista(string.Format("tb_endereco_empresa.id_empresa={0}", DDL_ID_EMPRESA.SelectedValue), ""))
                            {
                                DDL_ID_ENDERECO_RETIRADA.Items.Add(new ListItem(string.Concat(o_tb_endereco_empresa.endereco.ToString(), ",", o_tb_endereco_empresa.numero.ToString()), o_tb_endereco_empresa.id.ToString()));
                            }

                            if (o_tb_empresa.id_crt == (int)PUB_ENUM.IMPOSTO_CRT.RegimeNormal)
                            {
                                PNL_ICMS_TRIBUTADO_INTEGRAL.Visible = true;
                                PNL_ICMS_SIMPLES_NACIONAL.Visible = false;
                            }
                            else
                            {
                                DDL_ID_CST_IPI.SelectedValue = string.Empty;
                                PNL_ICMS_TRIBUTADO_INTEGRAL.Visible = false;
                                PNL_ICMS_SIMPLES_NACIONAL.Visible = true;
                            }

                        }
                        else
                        {
                            TXT_NUM_NOTA_FISCAL.Text = string.Empty;
                            TXT_SERIE.Text = string.Empty;
                            TXT_NUM_NOTA_FISCAL.Enabled = true;
                            TXT_SERIE.Enabled = true;

                            // ENTREDA ENDERECO ENTREGA NA EMPRESA 
                            DDL_ID_ENDERECO_ENTREGA.Items.Clear();
                            foreach (OBJ_TB_ENDERECO_EMPRESA o_tb_endereco_empresa in b_tb_endereco_empresa.SelecionarLista(string.Format("tb_endereco_empresa.id_empresa={0}", DDL_ID_EMPRESA.SelectedValue), ""))
                            {
                                DDL_ID_ENDERECO_ENTREGA.Items.Add(new ListItem(string.Concat(o_tb_endereco_empresa.endereco.ToString(), ",", o_tb_endereco_empresa.numero.ToString()), o_tb_endereco_empresa.id.ToString()));
                            }
                        }


                        // CENTRO DE CUSTO É DE ACORDO COM A TABELA EMPRESA X CENTRO CUSTO
                        b_tb_centro_custo.PreencheControle(DDL_ID_CENTRO_CUSTO, string.Format("id in (select id_centro_custo from tb_empresa_centro_custo where id_empresa = {0})", id_empresa), "", true);




                        // Parametro Padrao
                        if (o_tb_nf_parametro != null)
                        {
                            DDL_ID_FORMA_IMPRESSAO.SelectedValue = o_tb_nf_parametro.id_forma_impressao.ToString();
                            DDL_ID_AMBIENTE.SelectedValue = o_tb_nf_parametro.id_tipo_ambiente.ToString();
                            DDL_ID_PROCESSO_EMISSAO.SelectedValue = o_tb_nf_parametro.id_processo_emissao.ToString();
                            DDL_VERSAO_APLICATIVO.SelectedValue = o_tb_nf_parametro.id_versao.ToString();
                        }

                    }


                }
	        }
	        catch (Exception)
	        {
		
		        throw;
	        }
           
        }
             

        protected void DDL_ID_TIPO_EMISSAO_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDL_ID_TIPO_EMISSAO.SelectedValue != string.Empty)
            {
                // se o tipo de emissao for diferente de normal mostra o painel contingencia e busca os parametros padroes do sistema
                int id_tipo_emissao = Convert.ToInt32(DDL_ID_TIPO_EMISSAO.SelectedValue);
                if (!Equals(id_tipo_emissao, (int)PUB_ENUM.NF_TIPO_EMISSAO.NORMAL))
                {
                    PNL_NF_CONTINGENCIA.Visible = true;

                    foreach (OBJ_TB_NF_PARAMETRO o_tb_nf_parametro in b_tb_nf_parametro.SelecionarLista(string.Format("tb_nf_parametro.id_empresa = {0}", DDL_ID_EMPRESA.SelectedValue), ""))
                    {
                        TXT_DT_CONTINGENCIA.Text = DateTime.Now.ToShortDateString();
                        TXT_DT_CONTINGENCIA.Enabled = false;
                        TXT_DESC_JUSTIFICATIVA.Text = o_tb_nf_parametro.desc_justificativa.ToString();

                    }

                }
                else
                {
                    TXT_DT_CONTINGENCIA.Text = string.Empty;
                    TXT_DESC_JUSTIFICATIVA.Text = string.Empty;
                }
            }
        }

        protected void DDL_ID_MOD_DOC_FISCAL_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDL_ID_MOD_DOC_FISCAL.SelectedValue != string.Empty)
            {
                
                if (Equals(DDL_ID_MOD_DOC_FISCAL.SelectedValue, "55"))
                {
                    PNL_NF_MOD_NFE.Visible = true;
                }
                else
                {
                    PNL_NF_MOD_NFE.Visible = false;
                }
            }
        }

        protected void DDL_ID_TIPO_FRETE_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDL_ID_TIPO_FRETE.SelectedValue != string.Empty)
            {
                int id_tipo_frete = Convert.ToInt32(DDL_ID_TIPO_FRETE.SelectedValue);
                if(Equals(id_tipo_frete,(int)PUB_ENUM.TIPO_FRETE.Sem_frete))
                {
                    TAB_NF_TRANSPORTADORA.Visible = false;
                    PNL_NF_TRANSPORTADORA.Visible = false;
                }
                else
                {
                    TAB_NF_TRANSPORTADORA.Visible = true;
                    PNL_NF_TRANSPORTADORA.Visible = true;
                }

            }
        }

        protected void BTN_SALVAR_Click(object sender, EventArgs e)
        {
            try
            {
                BLL_TB_NF_HISTORICO b_tb_nf_historico = new BLL_TB_NF_HISTORICO();
                //BLL_TB_NF_XML_VENDA b_tb_xml_venda = new BLL_TB_NF_XML_VENDA();
                //OBJ_TB_NF_XML_VENDA o_tb_xml_venda = new OBJ_TB_NF_XML_VENDA();
                //BLL_TB_NF_XML_COMPRA b_tb_xml_compra = new BLL_TB_NF_XML_COMPRA();
                //OBJ_TB_NF_XML_COMPRA o_tb_xml_compra = new OBJ_TB_NF_XML_COMPRA();


                //NFE nf = new NFE();
                //string nfe_xml = string.Empty;

                //string path_absoluto = string.Empty;
                //string path_relativo = string.Empty;
                //string arquivo = string.Empty;
                //string tipo = string.Empty;
                //string tamanho = string.Empty;
                //string full_name = string.Empty;
                //string msgResultado = string.Empty;
                //int cResultado;
                //string cNF = string.Empty;
                //string cDV = string.Empty;
                //string chaveNFe = string.Empty;
                //DateTime data = DateTime.Now;
                string msg = string.Empty;


                using (TransactionScope scope = new TransactionScope())
                {
                    IncluirNF();
 
                    if (DDL_ID_TRANSPORTADORA.SelectedValue != string.Empty)
                    { 
                            IncluirNFTransportadora();
                    }
                    if (TXT_INFADFISCO.Text != string.Empty || TXT_INFCPL.Text != string.Empty)
                    { 
                            IncluirNFObservacao();                                                
                    }
                    
                    //if (HF_ID.Value != string.Empty && Equals(Convert.ToInt32(DDL_ID_OPERACAO.SelectedValue),(int)PUB_ENUM.NF_OPERACAO.SAIDA))
                    //{

                    //    // busco os dados da nota fiscal
                    //    o_tb_nf = b_tb_nf.SelecionarObjetoPorId(Convert.ToInt32(HF_ID.Value));

                    //    // criar chave
                    //    if(o_tb_nf != null)  
                    //    {
                    //        cResultado = nf.CriarChave(o_tb_nf, out msgResultado, out cNF, out cDV, out chaveNFe);

                    //        b_tb_nf.GravaChave(o_tb_nf.id, chaveNFe);

                    //        // 5601 Chave de Acesso da NF-e criada
                    //        if(Equals(5601,cResultado))
                    //        {
                    //            b_tb_nf_historico.Incluir(o_tb_nf.id, o_tb_nf.id_empresa, cResultado, msgResultado, DateTime.Now);

                    //            // gero o arquivo xml
                    //            if (chaveNFe != string.Empty)
                    //            {
                    //                nfe_xml = nf.GerarXML(o_tb_nf, chaveNFe);                                   
                    //            }
                                    

                    //            if (nfe_xml != string.Empty)
                    //            {
                    //                b_tb_nf_historico.Incluir(o_tb_nf.id, o_tb_nf.id_empresa, cResultado, string.Format("A chave de acesso {0} foi criada com sucesso.", chaveNFe), data);

                    //                // busco o path temporario para gravar o arquivo
                    //                path_absoluto = nf.PathAbsoluto(o_tb_nf,PUB_ENUM.NF_STATUS.EMDIGITACAO);
                    //                path_relativo = nf.PathRelativo(o_tb_nf, PUB_ENUM.NF_STATUS.EMDIGITACAO);

                    //                // se o diretorio não existir cria um novo diretorio
                    //                if (!PUB_FUNCOES.ExisteDiretorio(path_absoluto))
                    //                {
                    //                    PUB_FUNCOES.CriarDiretorio(path_absoluto);
                    //                }                                    

                    //                arquivo = string.Format("{0}.xml", chaveNFe);
                    //                full_name = string.Format("{0}\\{1}", path_absoluto, arquivo);
                                    

                    //                if (PUB_FUNCOES.SalvarXml(full_name, nfe_xml))
                    //                {
                    //                    b_tb_nf_historico.Incluir(o_tb_nf.id, o_tb_nf.id_empresa, cResultado, string.Format("O arquivo : {0}\\{1} foi salvo com sucesso.", path_absoluto, arquivo), data);
                                        
                    //                    // recebo as informações do arquivo
                    //                    FileInfo fi = PUB_FUNCOES.InfoArquivo(full_name);
                    //                    tamanho = fi.Length.ToString();
                    //                    tipo = fi.Extension.ToString();                                                                                
                    //                    b_tb_xml_venda.Incluir(o_tb_nf.id,o_tb_nf.id_empresa, path_absoluto, path_relativo,arquivo,tamanho,tipo, PUB_SESSAO.Id,o_tb_nf.id_status,data);
                    //                }

                    //                else
                    //                {
                    //                    b_tb_nf_historico.Incluir(o_tb_nf.id, o_tb_nf.id_empresa, 0, string.Format("Erro ao tentar salvar o arquivo : {0}\\{1}", path_absoluto, arquivo), data);
                    //                }
                    //            }         

                             
                    //        }
                    //        else
                    //        {
                    //            Master.MSG_ALERTA(msgResultado);
                    //            b_tb_nf_historico.Incluir(o_tb_nf.id, o_tb_nf.id_empresa, cResultado, msgResultado, DateTime.Now);            
                    //        }                            
                    //    }   
                    //}

                   
                    msg = string.Format("Nota fiscal Nº {0} salva com sucesso.", TXT_NUM_NOTA_FISCAL.Text);

                    b_tb_nf_historico.Incluir(Convert.ToInt32(HF_ID.Value), Convert.ToInt32(DDL_ID_EMPRESA.SelectedValue), 100, msg, DateTime.Now);

                    Master.MSG_ALERTA(msg);

                    scope.Complete();

                    scope.Dispose();
                }               
            }
            catch (Exception ex )
            {
                b_tb_log_erro.IncluirLogErro(ex);
                Master.MSG_ALERTA("Erro ao tentar salvar a nota fiscal. Erro:"+ ex.Message);
            }
        }

        protected void DDL_UF_ISSQN_FG_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                BLL_TB_CIDADE b_tb_cidade = new BLL_TB_CIDADE();
                if (DDL_UF_ISSQN_FG.SelectedValue != string.Empty)
                {
                    DDL_MUNICIPIO_FG.Items.Clear();
                    foreach (OBJ_TB_CIDADE obj_cidade in b_tb_cidade.SelecionarLista(string.Format("tb_cidade.id_uf = {0}", DDL_UF_ISSQN_FG.SelectedValue), "tb_cidade.cidade"))
                    {
                        DDL_MUNICIPIO_FG.Items.Add(new ListItem(obj_cidade.cidade.ToString(), obj_cidade.codigo_ibge.ToString()));
                    }
                    DDL_MUNICIPIO_FG.Items.Insert(0, new ListItem("Selecione", ""));
                    DDL_MUNICIPIO_FG.DataBind();

                }
            }
            catch (Exception)
            {
                
                throw;
            }
            
        }

 
 
        private decimal TotalLancadoContaReceber()
        {
            
            decimal valor_lancado = 0;
            var obj = b_tb_conta_receber.Dt_conta_receber.Compute("SUM(valor_parcela)", "");

            if (obj != null)
            {
                valor_lancado = Convert.ToDecimal(obj.ToString());
            }
            return valor_lancado;
        }

        private decimal TotalLancadoContaPagar()
        {            
            decimal valor_lancado = 0;
            var obj = b_tb_conta_pagar.Dt_conta_pagar.Compute("SUM(valor_parcela)", "");

            if (obj != null)
            {
                valor_lancado = Convert.ToDecimal(obj.ToString());
            }
            return valor_lancado;
        }


        protected void BTN_INCLUIR_PAGAMENTO_Click(object sender, EventArgs e)
        {
            BLL_TB_CONTA_RECEBER b_tb_conta_receber = new BLL_TB_CONTA_RECEBER();
            OBJ_TB_CONTA_PAGAR o_tb_conta_pagar = new OBJ_TB_CONTA_PAGAR();
            BLL_TB_CONTA_PAGAR_NF b_tb_conta_pagar_nf = new BLL_TB_CONTA_PAGAR_NF();
            BLL_TB_CONTA_RECEBER_NF b_tb_conta_receber_nf = new BLL_TB_CONTA_RECEBER_NF();

            BLL_TB_CONTA_PAGAR b_tb_conta_pagar = new BLL_TB_CONTA_PAGAR();
            OBJ_TB_CONTA_RECEBER o_tb_conta_receber = new OBJ_TB_CONTA_RECEBER();

            try
            {

                if (CHK_GERAR_FINANCEIRO.Checked)
                {

                    int id_nf = 0;
                    int num_nota_fiscal = 0;
                    int id_empresa = 0;
                    int id_cadastro = 0;
                    int id_conta_contabil = 0;
                    int id_forma_pagamento = 0;
                    int id_centro_custo = 0;
                    int id_condicao_pagamento = 0;
                    int id_banco_conta_corrente = 0;
                    decimal valor_parcela = 0;
                    decimal valor_nota_fiscal = 0;
                    decimal valor_saldo = 0;



                    if (DDL_ID_FORMA_PAGAMENTO.SelectedValue != string.Empty && DDL_ID_BANCO_CONTA_CORRENTE.SelectedValue != string.Empty && DDL_ID_CENTRO_CUSTO.SelectedValue != string.Empty && TXT_VALOR_PARCELA.Text != string.Empty)
                    {
                        using (TransactionScope scope = new TransactionScope())
                        {
                            o_tb_nf = b_tb_nf.SelecionarObjetoPorId(Convert.ToInt32(HF_ID.Value));

                            id_nf = o_tb_nf.id;
                            num_nota_fiscal = Convert.ToInt32(TXT_NUM_NOTA_FISCAL.Text);
                            id_cadastro = o_tb_nf.id_cadastro;
                            id_empresa = o_tb_nf.id_empresa;
                            id_condicao_pagamento = Convert.ToInt32(DDL_ID_CONDICAO_PAGAMENTO.SelectedValue);
                            id_forma_pagamento = Convert.ToInt32(DDL_ID_FORMA_PAGAMENTO.SelectedValue);
                            id_conta_contabil = Convert.ToInt32(DDL_ID_CONTA_CONTABIL.SelectedValue);
                            id_centro_custo = Convert.ToInt32(DDL_ID_CENTRO_CUSTO.SelectedValue);
                            id_banco_conta_corrente = Convert.ToInt32(DDL_ID_BANCO_CONTA_CORRENTE.SelectedValue);
                            valor_parcela = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_PARCELA.Text));
                            valor_saldo = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_SALDO.Text));
                            valor_nota_fiscal = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_NOTA_FISCAL.Text));

                            if (Equals(id_operacao, (int)PUB_ENUM.PEDIDO_OPERACAO.ENTRADA))
                            {
                                b_tb_conta_pagar.Incluir(id_nf, num_nota_fiscal, id_empresa, id_cadastro, id_forma_pagamento, id_condicao_pagamento, id_conta_contabil, id_centro_custo, id_banco_conta_corrente, valor_parcela, valor_saldo);

                                valor_saldo = valor_nota_fiscal - b_tb_conta_pagar.TotalLancadoNF(id_nf);
                            }
                            else
                            {
                                b_tb_conta_receber.Incluir(id_nf, num_nota_fiscal, id_empresa, id_cadastro, id_forma_pagamento, id_condicao_pagamento, id_conta_contabil, id_centro_custo, id_banco_conta_corrente, valor_parcela, valor_saldo);


                                valor_saldo = valor_nota_fiscal - b_tb_conta_receber.TotalLancadoNF(id_nf);
                            }

                            
                            TXT_VALOR_SALDO.Text = PUB_FUNCOES.FormataNumerico(valor_saldo.ToString());

                            CarregaFinanceiro(id_empresa, id_nf, id_operacao);

                            scope.Complete();

                        }
                       
                    
                    }
                    else
                    {
                        Master.MSG_ALERTA("É necessário selecionar todos os campos de pagamentos para gerar o financeiro.");

                    }

                
                }
            }
            catch (Exception)
            {

                throw;
            }


        }

        private void CarregaFinanceiro(int id_empresa, int id_nf, int id_operacao)
        {
            BLL_TB_CONTA_PAGAR b_tb_conta_pagar = new BLL_TB_CONTA_PAGAR();
            BLL_TB_CONTA_RECEBER b_tb_conta_receber = new BLL_TB_CONTA_RECEBER();
            OBJ_TB_CONTA_PAGAR o_tb_conta_pagar = new OBJ_TB_CONTA_PAGAR();
            OBJ_TB_CONTA_RECEBER o_tb_conta_receber = new OBJ_TB_CONTA_RECEBER();
            List<OBJ_TB_CONTA_RECEBER> lista_conta_receber = new List<OBJ_TB_CONTA_RECEBER>();
            List<OBJ_TB_CONTA_PAGAR> lista_conta_pagar = new List<OBJ_TB_CONTA_PAGAR>();


            try
            {
                decimal valor_lancado = 0;
                decimal valor_nota_fiscal = 0;

                valor_nota_fiscal = Convert.ToDecimal(TXT_VALOR_TOTAL_NOTA_FISCAL.Text);

                if (Equals(id_operacao, (int)PUB_ENUM.PEDIDO_OPERACAO.ENTRADA))
                {
                    lista_conta_pagar = b_tb_conta_pagar.ListaContaPagarNF(id_empresa, id_nf);

                    for (int i = 0; i <= lista_conta_pagar.Count - 1; i++)
                    {
                        valor_lancado = valor_lancado + lista_conta_pagar[i].valor_parcela;
                    }

                    GRV_TB_FINANCEIRO.DataSource = lista_conta_pagar;
                    GRV_TB_FINANCEIRO.DataBind();
                }
                else
                {
                    lista_conta_receber = b_tb_conta_receber.ListaContaReceberNF(id_empresa, id_nf);

                    for (int i = 0; i <= lista_conta_receber.Count - 1; i++)
                    {
                        valor_lancado = valor_lancado + lista_conta_receber[i].valor_parcela;
                    }
                    GRV_TB_FINANCEIRO.DataSource = lista_conta_receber;
                    GRV_TB_FINANCEIRO.DataBind();
                }

                TXT_VALOR_SALDO.Text = string.Format("{0}", valor_nota_fiscal - valor_lancado);
                TXT_VALOR_PARCELA.Text = string.Format("{0}", valor_nota_fiscal - valor_lancado);


                if (GRV_TB_FINANCEIRO.Rows.Count > 0)
                {
                    PNL_GERAR_FINANCEIRO.Visible = true;
                }
            }
            catch (Exception)
            {

                throw;
            }



        }

   
        protected void CHK_GERAR_FINANCEIRO_CheckedChanged(object sender, EventArgs e)
        {
            if (CHK_GERAR_FINANCEIRO.Checked)
            {
                PNL_GERAR_FINANCEIRO.Visible = true;
            }
            else
            {
                PNL_GERAR_FINANCEIRO.Visible = false;
            }

        }

        protected void DDL_ID_CST_COFINS_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void IMG_BTN_CALCULAR_CST_ICMS_Click(object sender, ImageClickEventArgs e)
        {

        }

        protected void IMG_BTN_CALCULAR_CSONS_Click(object sender, ImageClickEventArgs e)
        {

        }
 

        protected void DDL_ID_CENTRO_CUSTO_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDL_ID_CENTRO_CUSTO.SelectedValue != string.Empty)
            {
                b_tb_conta_contabil.PreencheControle(DDL_ID_CONTA_CONTABIL, string.Format("tb_conta_contabil.id in (SELECT id_conta_contabil FROM tb_centro_custo_conta_contabil where id_centro_custo in ({0}))", DDL_ID_CENTRO_CUSTO.SelectedValue), "", false);

                if (DDL_ID_CONTA_CONTABIL.Items.Count == 0)
                {
                    Master.MSG_ALERTA("Erro ao tentar carregar conta contabil, verifique a relação da tabela centro custo x conta contabil.");
                }
            }



        }


        protected void BTN_CALCULAR_IMPOSTO_Click(object sender, EventArgs e)
        {
            try
            {
                
                decimal val_icms = 0;
                decimal val_icms_st = 0;
                decimal val_ipi = 0;
                decimal val_cofins = 0;
                decimal val_cofins_st = 0;
                decimal val_pis = 0;
                decimal val_pis_st = 0;   
                decimal val_aliq_icms = 0;
                decimal val_aliq_icms_st = 0;
                decimal val_aliq_ipi = 0;
                decimal val_aliq_cofins = 0;
                decimal val_aliq_cofins_st = 0;
                decimal val_aliq_pis = 0;
                decimal val_aliq_pis_st = 0;
               
                decimal val_bc_ipi = 0;
                decimal val_bc_icms = 0;
                decimal val_bc_icms_st = 0;

                decimal val_seguro = 0;
                decimal val_frete = 0;
                decimal val_desconto = 0;
                decimal val_outro = 0;
                decimal val_unitario = 0;
                decimal qtd = 0;
                decimal val_total_item = 0;


                qtd = Convert.ToDecimal(TXT_QTD.Text);
                val_unitario = Convert.ToDecimal(TXT_VALOR_UNITARIO.Text);
                val_desconto = Convert.ToDecimal(TXT_VALOR_DESCONTO.Text);
                val_outro = Convert.ToDecimal(TXT_VALOR_OUTRO.Text);
                val_frete = Convert.ToDecimal(TXT_VALOR_FRETE.Text);
                val_seguro = Convert.ToDecimal(TXT_VALOR_SEGURO.Text);
              
                // valor total item
                val_total_item  = ( val_unitario * qtd ) + val_frete + val_outro + val_seguro - val_desconto;

                val_aliq_cofins = Convert.ToDecimal(TXT_VALOR_ALIQ_COFINS.Text);
                val_aliq_cofins_st = Convert.ToDecimal(TXT_VALOR_ALIQ_COFINS_ST.Text);
                val_aliq_icms = Convert.ToDecimal( TXT_VALOR_ALIQ_ICMS.Text);
                val_aliq_icms_st = Convert.ToDecimal( TXT_VALOR_ALIQ_ICMS_ST.Text);
                val_aliq_ipi = Convert.ToDecimal(TXT_VALOR_ALIQ_IPI.Text);
                val_aliq_pis = Convert.ToDecimal(TXT_VALOR_ALIQ_PIS.Text);
                val_aliq_pis_st = Convert.ToDecimal(TXT_VALOR_ALIQ_PIS_ST.Text);


                // CALCULO IPI *******
                
                // base calculo ipi 
                val_bc_ipi = (val_unitario * qtd) + val_seguro + val_outro;
                val_ipi = (val_bc_ipi * val_aliq_ipi / 100 );


                // CALCULO ICMS *********



            }
            catch (Exception)
            {
                
                throw;
            }
        }

        protected void rblTributo_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (rblTributo.SelectedValue == "ICMS")
            {
                PNL_NF_ITEM_IMPOSTO_ISSQN.Visible = false;
                PNL_NF_ITEM_IMPOSTO_COFINS.Visible = true;
                PNL_NF_ITEM_IMPOSTO_ICMS.Visible = true;
                PNL_NF_ITEM_IMPOSTO_II.Visible = true;
                PNL_NF_ITEM_IMPOSTO_IPI.Visible = true;
                PNL_NF_ITEM_IMPOSTO_PIS.Visible = true;                
            }
            else
            {
                PNL_NF_ITEM_IMPOSTO_ISSQN.Visible = true;
                PNL_NF_ITEM_IMPOSTO_COFINS.Visible = true;
                PNL_NF_ITEM_IMPOSTO_ICMS.Visible = false;
                PNL_NF_ITEM_IMPOSTO_II.Visible = false;
                PNL_NF_ITEM_IMPOSTO_IPI.Visible = false;
                PNL_NF_ITEM_IMPOSTO_PIS.Visible = true;                
            }
        }

        protected void BTN_FECHAR_Click(object sender, EventArgs e)
        {            
            Response.Redirect(string.Format("nf_listar.aspx?id_operacao={0}",id_operacao),false);
        }
        

        

   
        
    }
}